3 ms·
It's not pretty, but you can do it: >>> sum([['a', 'b', 'c'], ['d', 'e', 'f']], []) ['a', 'b', 'c', 'd', 'e', 'f'] This makes use of the optional start ar
by dgouldin 16y ago
It's not pretty, but you can do it:
>>> sum([['a', 'b', 'c'], ['d', 'e', 'f']], [])
['a', 'b', 'c', 'd', 'e', 'f']
This makes use of the optional start argument and list add operator. However, Python's docs suggest using itertools.chain instead:
http://docs.python.org/library/functions.html#sum http://docs.python.org/library/functions.html#sum
>>> import itertools
>>> [l for l in itertools.chain(*[['a', 'b', 'c'], ['d', 'e', 'f']])]
['a', 'b', 'c', 'd', 'e', 'f']
(Of course you lose the benefit of a generator by using a list comprehension, but this is just an example.)
- jacobolus 16y agoYour second example is easier to just write as: >>> from itertools import chain >>> list_of_lists = [['a', 'b', 'c'], ['d', 'e', 'f']] >>> list(chain(*list_of_lists)) ['a', 'b', 'c', 'd', 'e', 'f'] That is, list(«foo») is clearer and more idiomatic than [x for x in «foo»].
- scottbessler 16y agoI may be missing something, but why isn't skipping your list comprehension maintaining the benefit of using a generator? >>> from itertools import chain >>> chain(*[['a', 'b', 'c'], ['d', 'e', 'f']])
- dgouldin 16y agoIt is, but I don't get to show you the result of the chain that way. :)