我在从 zip 命令中获取预期结果时遇到一些问题。情况 1-3 是有道理的,但在情况 4 和 5 中(我认为它们是等效的?)我期望结果为 [['a'],['b'],['c'],['d' ]],而是将整个第二个列表 append 到我初始化的列表列表的每个子列表中。
案例1:
>>> for a in zip([1,2,3,4],['a','b','c','d']):
... print a
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
案例2:
>>> for (a,b) in zip([1,2,3,4],['a','b','c','d']):
... print a,b
...
1 a
2 b
3 c
4 d
案例3:
>>> temp = [[]] * 4
>>> for (a,b) in zip([0,1,2,3],['a','b','c','d']):
... temp[a] = b
...
>>> temp
['a', 'b', 'c', 'd']
案例4:
>>> temp = [[]] * 4
>>> for (a,b) in zip([0,1,2,3],['a','b','c','d']):
... temp[a].append(b)
...
>>> temp
[['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]
案例5:
>>> temp = [[]] * 4
>>> for a,b in zip([0,1,2,3],['a','b','c','d']):
... temp[a].append(b)
...
>>> temp
[['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]
最佳答案
[[]] * 4
创建对单个对象的引用列表:
>>> l = [[]] * 4
>>> l
[[], [], [], []]
>>> l[0].append(1)
>>> l
[[1], [1], [1], [1]]
尝试改为[[] for _ in range(4)]
。
关于python - 使用 python 循环两个列表,使用一个作为列表列表的索引,另一个作为要 append 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760530/