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

标签 python list zip append

我在从 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/

相关文章:

python - 如何在 TensorFlow while_loop 中赋值

java - 使用 Java 8 lambdas 按不同元素对数组列表进行排序

python - 在python范围内查找素数

ruby - Zip::ZipFile:如何在不解压zip的情况下修改内部文本文件的内容?

javascript - 从服务器下载 zip excel 文件

python - 计算数组不重叠子区间中的元素数量

python - 用常量 x 映射 lambda x,y

python - 使用 tf.data.Dataset.from_generator() 和函数(tensorflow 或 numpy)作为生成源(而不是文件)

Perl:展平多维数组的最简单方法是什么?

java - Java:从FTP下载.Zip文件并提取内容而不将文件保存在本地系统上