[英]How to join lists element-wise in Python?
l1 = [4, 6, 8]
l2 = [a, b, c]
結果= [(4,a),(6,b),(8,c)]
我怎么做?
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')]
使用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)]
>>> l1 = [4, 6, 8]; l2 = ['a', 'b', 'c']
>>> zip(l1, l2)
[(4, 'a'), (6, 'b'), (8, 'c')]
如果列表的長度相同,或者您希望列表的長度是較短列表的長度,那么請使用zip,就像其他人指出的那樣。
如果列表的長度不同,則可以使用帶None
變換函數的map
:
>>> l1 = [1, 2, 3, 4, 5]
>>> l2 = [9, 8, 7]
>>> map(None, l1, l2)
[(1, 9), (2, 8), (3, 7), (4, None), (5, None)]
請注意,'extra'值與None
配對。
值得注意的是, zip
和map
都可以與任意數量的iterables一起使用:
>>> zip('abc', 'def', 'ghi')
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
>>> map(None, 'abc', 'def', 'gh')
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', None)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.