如何在列表中的列表中重新格式化变量以列出一个列表



非常流行的答案,但我的答案与其他答案不同。我有一个清单:

s = [(1, 2, 3),
     (4, 5, 6),
     (7, 8, 9)]

我不需要其他列表就可以将我的列表结合在一起,并列出一个大列表。我需要它们是字符串,所以我做

[map(str, x) for x in s]

但是,这样我得到了[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

所以我需要['1', '2', '3', '4', '5', '6', '7', '8', '9']

您需要使用Flatenning的列表理解:

print ([i for x in s for i in map(str, x)])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
import itertools
s = [(1, 2, 3),
    (4, 5, 6),
    (7, 8, 9)]
print(list(map(str,itertools.chain(*s))))

您可以使用sumlist

map(str, list(sum(s, ())))

简单地使用nestled列表理解是最简单的

>>> [str(sii) for si in s for sii in si]
['1', '2', '3', '4', '5', '6', '7', '8', '9']

另一个选项是使用 reduce将平面列表和 map铸造为字符串。

>>> from functools import reduce
>>> s = [(1, 2, 3), (4, 5, 6),(7, 8, 9)]
>>> list(map(str,reduce(lambda x,y: x+y,s)))
>>> ['1', '2', '3', '4', '5', '6', '7', '8', '9']

itertools.chain为此目的方便:

from itertools import chain
s = [(1, 2, 3),
     (4, 5, 6),
     (7, 8, 9)]
list(map(str, chain.from_iterable(s)))
# ['1', '2', '3', '4', '5', '6', '7', '8', '9']

最新更新