如何在Python中以元素方式连接列表?

时间:2009-12-11 01:34:07

标签: python list

l1 = [4, 6, 8]
l2 = [a, b, c]

result = [(4,a),(6,b),(8,c)]

我该怎么做?

4 个答案:

答案 0 :(得分:12)

zip标准功能为您完成此任务:

>>> l1 = [4, 6, 8]
>>> l2 = ["a", "b", "c"]
>>> zip(l1, l2)
[(4, 'a'), (6, 'b'), (8, 'c')]

如果您使用的是Python 3.x,那么zip会返回一个生成器,您可以使用list()构造函数将其转换为列表:

>>> list(zip(l1, l2))
[(4, 'a'), (6, 'b'), (8, 'c')]

答案 1 :(得分:11)

使用zip

l1 = [1, 2, 3]
l2 = [4, 5, 6]
>>> zip(l1, l2)
[(1, 4), (2, 5), (3, 6)]

请注意,如果您的列表长度不同,结果将被截断为最短输入的长度。

>>> print zip([1, 2, 3],[4, 5, 6, 7])
[(1, 4), (2, 5), (3, 6)]

您还可以使用包含两个以上列表的zip:

>>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

如果您有列表列表,可以使用星号呼叫zip

>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zip(*l)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

答案 2 :(得分:1)

>>> l1 = [4, 6, 8]; l2 = ['a', 'b', 'c']
>>> zip(l1, l2)
[(4, 'a'), (6, 'b'), (8, 'c')]

答案 3 :(得分:0)

如果列表的长度相同,或者您希望列表的长度是较短列表的长度,那么请使用zip,就像其他人指出的那样。

如果列表的长度不同,那么您可以使用转化函数为map的{​​{1}}:

None

请注意,“额外”值会与>>> l1 = [1, 2, 3, 4, 5] >>> l2 = [9, 8, 7] >>> map(None, l1, l2) [(1, 9), (2, 8), (3, 7), (4, None), (5, None)] 配对。

同样值得注意的是,Nonezip都可以与任意数量的迭代一起使用:

map