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)])
我认为它可以打印出相同的结果,但事实并非如此。 两个句子有什么区别?
答案 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])