簡體   English   中英

是否有內置的python來創建多個列表中的元組?

[英]Is there a python builtin to create tuples from multiple lists?

是否有一個內置的python與一組列表或類似的tupler相同:

def tupler(arg1, *args):
    length = min([len(arg1)]+[len(x) for x in args])
    out = []
    for i in range(length):
        out.append(tuple([x[i] for x in [arg1]+args]))
    return out

所以,例如:

tupler([1,2,3,4],[5,6,7])

收益:

[(1,5),(2,6),(3,7)]

或者也許有適當的pythony方式這樣做,還是有類似的發電機???

我認為你正在尋找zip()

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

看一下內置的zip函數http://docs.python.org/library/functions.html#zip

它也可以處理兩個以上的列表,例如n,然后創建n元組。

>>> zip([1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14])
 [(1, 5, 9, 13), (2, 6, 10, 14)]
zip([1,2,3,4],[5,6,7])

--->[(1,5),(2,6),(3,7)]


args = [(1,5),(2,6),(3,7)]

zip(*args)

--->[1,2,3],[5,6,7]

正確的方法是使用zip功能。

另外,我們可以使用列表推導和內置enumerate函數
達到同樣的效果。

>>> L1 = [1,2,3,4]
>>> L2 = [5,6,7]
>>> [(value, L2[i]) for i, value in enumerate(L1) if i < len(L2)]
[(1, 5), (2, 6), (3, 7)]
>>> 

上述示例的缺點是我們並不總是以最小長度迭代列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM