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本身不会改变,因此将输出[]。这个问题与您在循环中看到的问题相同

我尝试使用以下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
后,您将重新分配
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]
你真的应该读一读:可能的重复