Python zip函数使用

时间:2019-02-19 07:12:14

标签: python

list = ([1,2,3], [2,3,4], [5,6,7])
print([x[0] - sum(x) for x in zip(*list[1:])])
print([x[0]*2 - sum(x) for x in zip(*list)])

我认为它可以打印出相同的结果,但事实并非如此。 两个句子有什么区别?

2 个答案:

答案 0 :(得分:1)

list = ([1,2,3], [2,3,4], [5,6,7])  # You should avoid using keywords as variable names.
print([x[0] - sum(x) for x in zip(*list[1:])])  # iterating from the index 1
print([x[0]*2 - sum(x) for x in zip(*list)])   # iterating from index 0

如果执行以下命令,您将看到它们之间的输出差异。

>>> [*zip(*list[1:])]
[(2, 5), (3, 6), (4, 7)]
>>> [*zip(*list)]
[(1, 2, 5), (2, 3, 6), (3, 4, 7)]

因此,第一个命令在包含2个元素的列表上进行迭代。而第二个命令将遍历包含3个元素的列表。

答案 1 :(得分:0)

区别在于,在第一句话中,您仅采用原始列表的第二和第三元素,而在第二句话中,您采用整个列表,然后乘以2。

“列表”重命名为“ ll”

ll[1:]返回([2, 3, 4], [5, 6, 7])