如何使用zip()函数在Python中进行数据压缩?

5
例如,我有这些变量。
a = [1,2]
b = [3,4]

如果我使用函数zip(),结果将是:
[(1, 3), (2, 4)]

但是我有这个列表:

a = [[1,2], [3,4]]

我需要得到与第一个结果相同的结果:[(1, 3), (2, 4)]。但是,当我执行以下操作时:

zip(a)

我得到:

[([1, 2],), ([3, 4],)]

我该做什么?

2个回答

13
zip 函数需要多个可迭代对象作为参数,所以如果你传递一个单一的列表包含多个列表,那么子列表会被转换成元组并且每个元组只有一个元素。
当你传递这个列表给 zip 函数时,你需要使用 * 来将其解包。这样就可以将一个包含两个列表的参数传递给函数,而不是一个包含多个列表的参数。
>>> a = [[1,2], [3,4]]
>>> zip(*a)
[(1, 3), (2, 4)]

0

只需以不同的方式调用zip:

a = [[1,2], [3,4]]
zip(a[0], a[1])

我了解这个 - 但如果在程序中不知道项目的确切数量呢? - Q-bart
是的,这是一个问题。当然你可以遍历列表,但使用tobias_k的解决方案更简单。 - tobifasc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接