使用 python 循环两个列表,使用一个作为列表列表的索引,另一个作为要追加的值

2023-12-31

我在从 zip 命令中获取预期结果时遇到一些问题。情况 1-3 是有道理的,但在情况 4 和 5 中(我认为它们是等效的?)我期望结果为 [['a'],['b'],['c'],['d' ]],而是将整个第二个列表附加到我初始化的列表列表的每个子列表中。

Case 1:

>>> for a in zip([1,2,3,4],['a','b','c','d']):
...     print a

(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')

Case 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

Case 3:

>>> temp = [[]] * 4
>>> for (a,b) in zip([0,1,2,3],['a','b','c','d']):
...     temp[a] = b
... 
>>> temp
['a', 'b', 'c', 'd']

Case 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']]

Case 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]]

Try [[] for _ in range(4)]反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 循环两个列表,使用一个作为列表列表的索引,另一个作为要追加的值 的相关文章

随机推荐