在Python中修改列表中的列表

Modifying a list within a list in Python

本问题已经有最佳答案,请猛点这里访问。

我正试图修改临时列表并将临时列表存储在可能的列表中,但我需要保持列表1不变。当我在python中运行这个命令时,我的临时列表没有改变,所以我想知道这个错误在哪里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
list1 = [['1', '1', '1'],
     ['0', '0', '0'],
     ['2', '2', '2']]

temp = list1
possible = []

for i in range(len(temp)-1):
    if(temp[i][0] == 1):
            if(temp[i+1][0] == 0):
                    temp[i+1][0] == 1

possible = possible + temp
temp = list1

print(possible)


由于list1是二维数组,所以把list1的数组复制到temp中,根据别人的建议,我们可以使用deepcopy。请参阅此处的链接。或者,也可以使用列表理解来完成,如图所示。

数组以string为元素,可以用if(temp[i][0] == '1')if(temp[i+1][0] == '0')替换条件语句if(temp[i][0] == 1)if(temp[i+1][0] == 0)。如上述评论所述,temp[i+1][0] == 1必须由temp[i+1][0] = 1取代。您可以尝试以下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from copy import deepcopy

list1 = [['1', '1', '1'],
         ['0', '0', '0'],
         ['2', '2', '2']]

# copying element from list1
temp = deepcopy(list1)
possible = []
for i in range(len(temp)-1):
    if(temp[i][0] == '1'):
        if(temp[i+1][0] == '0'):
            temp[i+1][0] = '1'


possible = possible + temp

print('Contents of possible: ', possible)
print('Contents of list1: ', list1)
print('Contents of temp: ', temp)