继我刚才的问题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