28

继我之前的问题如何将列表项分组到元组中?

例如,如果我有一个元组列表

a = [(1,3),(5,4)]

如何解压缩元组并将其重新格式化为一个列表

b = [1,3,5,4]

我认为这也与iter功能有关,但我真的不知道该怎么做。请赐教。

4

5 回答 5

59
b = [i for sub in a for i in sub]

那会成功的。

于 2013-03-07T10:51:18.477 回答
14
In [11]: list(itertools.chain(*a))
Out[11]: [1, 3, 5, 4]

如果你只需要迭代1, 3, 5, 4,你可以摆脱list()调用。

于 2013-03-07T10:53:47.903 回答
3

只需遍历列表 a 并解压缩元组:

l = []
for x,y in a:
   l.append(x)
   l.append(y)
于 2013-03-07T10:53:26.483 回答
2

其他方式:

a = [(1,3),(5,4)]
b = []

for i in a:
    for j in i:
        b.append(j)

print b

这只会处理列表 (a) 中的元组。如果您也想解析松散变量,则需要添加 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
于 2013-03-07T10:54:24.937 回答
1
import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]
于 2013-03-07T10:51:57.653 回答