非常流行的答案,但我的答案与其他答案不同。我有一个清单:
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))))
您可以使用sum
和list
:
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']