python:从列表中创建元组列表

时间:2011-09-05 22:13:50

标签: python list tuples

我有两个清单:

x = ['1', '2', '3']
y = ['a', 'b', 'c']

我需要从这些列表中创建一个元组列表,如下所示:

z = [('1','a'), ('2','b'), ('3','c')]

我尝试这样做:

z = [ (a,b) for a in x for b in y ]

但结果是:

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

即。 x中每个元素的元组列表,y中的每个元素......做我想做的事情的正确方法是什么?谢谢......

编辑:在编辑之前提到的另外两个重复是我的错,在另一个for循环中将它缩进... ...

3 个答案:

答案 0 :(得分:46)

使用内置函数zip()

在Python 3中:

z = list(zip(x,y))

在Python 2中:

z = zip(x,y)

答案 1 :(得分:11)

您正在寻找zip builtin功能。 来自文档:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]

答案 2 :(得分:8)

您正在使用zip功能。

直接来自问题:How to merge lists into a list of tuples in Python?

>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> zip(list_a,list_b)
[(1, 5), (2, 6), (3, 7), (4, 8)]