Python 如何为另一个列表中的列表分配新值?
我尝试使用以下python代码为列表分配一个新值Python 如何为另一个列表中的列表分配新值?,python,list,function,for-loop,variable-assignment,Python,List,Function,For Loop,Variable Assignment,我尝试使用以下python代码为列表分配一个新值 a,b,c=[],[],[] def change(): return [1] for i in [a,b,c]: i=change() print(a) 输出是[],但我需要的是[1]这里要做的是在循环中分配变量I,但实际上并没有更改a、b或c 例如,您希望以下源代码输出什么 a=[] i=a i=[1] 印刷品(a) 在这里,在为i分配a后,您将重新分配ia本身不会改变,因此将输出[]。这个问题与您在循环中看到的问题相同
a,b,c=[],[],[]
def change():
return [1]
for i in [a,b,c]:
i=change()
print(a)
输出是
[]
,但我需要的是[1]
这里要做的是在循环中分配变量I
,但实际上并没有更改a
、b
或c
例如,您希望以下源代码输出什么
a=[]
i=a
i=[1]
印刷品(a)
在这里,在为i
分配a
后,您将重新分配i
<当您执行i=[1]
操作时,code>a本身不会改变,因此将输出[]
。这个问题与您在循环中看到的问题相同
你可能想要这样的东西
a,b,c=(a,b,c中i的change())
您创建了一个名为i的变量,然后(依次)分配给它a,然后分配1,然后分配b,然后分配1,然后分配c,最后分配1。然后你打印了一张原封不动的照片。如果要更改,则需要指定给。即:
a = [1]
问题的一部分在for循环中。你说的是i=1,但这与任何列表都没有关系。您的for循环应该如下所示:
for i in [a, b, c]:
try:
i[0] = 1
except IndexError:
i.append(1)
你必须这样做:
a,b,c=[],[],[]
def change(p):
p.append(1)
for i in [a,b,c]:
change(i)
print(a)
您只需更改变量
i
。您没有更改原始列表变量:a、b、c
在For循环中,变量i
分配有a、b、c
的引用副本。这是一个完全不同的变量。更改i
的值不会更改a、b、c
的值
如果要实际更改a、b、c的值,必须使用append
方法
a,b,c=[],[],[]
def change():
返回[1]
因为我在[a,b,c]中:
i、 追加(更改())
印刷品(a)
有关更多信息,请阅读此有关更改函数内部外部列表的信息,请参阅
In [45]: a,b,c=[],[],[]
...: def change():
...: return [1]
...: for i in [a,b,c]:
...: i[:]=change()
...: print(a)
...: print(b)
[1]
[1]
你真的应该读一读:可能的重复