Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么此代码会更改两个列表(id不相同)?_Python_List - Fatal编程技术网

Python 为什么此代码会更改两个列表(id不相同)?

Python 为什么此代码会更改两个列表(id不相同)?,python,list,Python,List,我有以下清单: l1 = [['a2', 1], ['a2', 2], ['a2', 3], ['a2', 4], ['a2', 5]] membership = [0, 1, 1, 2, 3] 我有: l2 = l1[:] [item.append(membership[i]) for i, item in enumerate(l2)] 但这两个列表现在看起来都像: [['a2', 1, 0], ['a2', 2, 1], ['a2', 3, 1], ['a2', 4, 2], ['a2'

我有以下清单:

l1 = [['a2', 1], ['a2', 2], ['a2', 3], ['a2', 4], ['a2', 5]]
membership = [0, 1, 1, 2, 3]
我有:

l2 = l1[:]
[item.append(membership[i]) for i, item in enumerate(l2)]
但这两个列表现在看起来都像:

[['a2', 1, 0], ['a2', 2, 1], ['a2', 3, 1], ['a2', 4, 2], ['a2', 5, 3]]
我以为l1[:]会返回副本?l2=listl1的行为相同

返回

False
l1[:]只需创建l1的浅层副本,它不适用于嵌套列表。对于您需要的嵌套列表

注意:在列表理解中更改列表不是正确的方法。而是使用普通for循环

l1[:]只需创建l1的浅层副本,它不适用于嵌套列表。对于您需要的嵌套列表

注意:在列表理解中更改列表不是正确的方法。而是使用普通for循环

l1[:]使用与l1相同的项目创建一个新列表,即:idl1!=idl2,但idl1[0]==idl2[0],idl1[1]==idl2[1],…l1[:]使用与l1相同的项目创建一个新列表,即:idl1!=idl2,但idl1[0]==idl2[0],idl1[1]==idl2[1]。。。
False
>>> import copy
>>> l1 = [['a2', 1], ['a2', 2], ['a2', 3], ['a2', 4], ['a2', 5]]
>>> membership = [0, 1, 1, 2, 3]
>>> l2=copy.deepcopy(l1)
>>> [item.append(membership[i]) for i, item in enumerate(l2)]
[None, None, None, None, None]
>>> l1
[['a2', 1], ['a2', 2], ['a2', 3], ['a2', 4], ['a2', 5]]
>>> l2
[['a2', 1, 0], ['a2', 2, 1], ['a2', 3, 1], ['a2', 4, 2], ['a2', 5, 3]]
>>> 
for i, item in enumerate(l2):
    item.append(membership[i])