繼我剛纔的問題How to group list items into tuple?在Python中,如何將一個元組列表加入到一個列表中?
如果我有一個元組列表,例如
a = [(1,3),(5,4)]
我怎樣才能解開元組,並將其重新格式化爲一個單獨的列表
b = [1,3,5,4]
我認爲這也與iter
功能有關,但我真的不知道如何做到這一點。請賜教。
繼我剛纔的問題How to group list items into tuple?在Python中,如何將一個元組列表加入到一個列表中?
如果我有一個元組列表,例如
a = [(1,3),(5,4)]
我怎樣才能解開元組,並將其重新格式化爲一個單獨的列表
b = [1,3,5,4]
我認爲這也與iter
功能有關,但我真的不知道如何做到這一點。請賜教。
import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]
只是遍歷列表和解壓元組:
l = []
for x,y in a:
l.append(x)
l.append(y)
In [11]: list(itertools.chain(*a))
Out[11]: [1, 3, 5, 4]
如果你只需要遍歷1, 3, 5, 4
,你可以擺脫list()
通話。
'itertools.chain.from_iterable'有什麼意義?那麼如果你可以這麼做呢? – Volatility 2013-03-07 10:57:27
@Volatility:懶惰評價? – NPE 2013-03-07 10:58:46
嗯,足夠真實 – Volatility 2013-03-07 11:07:03
另一種方式:
a = [(1,3),(5,4)]
b = []
for i in a:
for j in i:
b.append(j)
print b
這將只處理列表(一)壽裏面的元組。如果你想解析鬆散變量,你需要添加if-else語句,比如;
a = [(1,3),(5,4), 23, [21, 22], {'somevalue'}]
b = []
for i in a:
if type(i) == (tuple) or type(i) == (list) or type(i) == (set):
for j in i:
b.append(j)
else:
b.append(i)
print b
使用'isinstance(i,collections.Iterable)'而不是類型檢查(假設'collections'已經被導入) – Volatility 2013-03-07 11:15:46
非常精確的副本... – danodonovan 2013-03-07 10:55:45