簡體   English   中英

我怎樣才能將列表壓縮到已經壓縮的列表中?

[英]How can I additionally zip list into already zipped list?

假設我有一個兩元素元組列表和一個(非元組)文字列表,例如整數:

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

我想列出三元素元組,所以我編碼如下:

zipped = zip((t[0] for t in a), (t[1] for t in a), b)
assert zipped == [('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]

我當前的代碼工作得很好,但我想知道有更高效和優雅的配方,但我的代碼必須迭代並解壓縮每個元組兩次。 任何人都可以建議嗎?

使用列表理解,元組解包:

>>> a = [('x', 'a'), ('y', 'b'), ('z', 'c')]
>>> b = [1, 2 ,3]
>>> [(x,y,z) for (x,y), z in zip(a, b)]
[('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]

>>> a = [('x', 'a'), ('y', 'b'), ('z', 'c')]
>>> b = [1, 2 ,3]
>>> [x + (y,) for x, y in zip(a, b)]
[('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]

一個沒有使用for循環,

zip(*(zip(*a)+ [b]))

暫無
暫無

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

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