我正在使用列表 p = [[1,2,3],[4,5,6]]
如果我这样做:
>>>d=zip(p)
>>>list(d)
[([1, 2, 3],), ([4, 5, 6],)]
虽然,我真正想要的是使用这个获得的:
>>>d=zip(*p)
>>>list(d)
[(1, 4), (2, 5), (3, 6)]
我发现在列表名称前添加“*”可以提供所需的输出,但我无法确定它们的操作有何不同。你能解释一下区别吗?
最佳答案
zip
想要将一堆参数压缩在一起,但您拥有的是一个参数(一个列表,其元素也是列表)。 *
函数调用中的“解包”列表(或其他可迭代),使其每个元素成为单独的参数。因此,如果没有 *
,您正在执行 zip([[1,2,3],[4,5,6]])
。使用 *
,您正在执行 zip([1,2,3], [4,5,6])
。
关于python - zip(list) 和 zip(*list) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139350/