Duplicates:
- Flattening a shallow list in Python
- Comprehension for flattening a sequence of sequences?
Lets say I have a list with nested lists:
[["a","b","c"], ["d","e","f"], ["g","h","i","j"]...]
what is the best way to convert it to a single list like that
["a", "b", "c", "d", "e"....]
Use itertools.chain
:
from itertools import chain list(chain.from_iterable(list_of_lists))
There's a straight forward example of this in the itertools
documentation (see http://docs.python.org/library/itertools.html#recipes look for flatten()
), but it's as simple as:
>>> from itertools import chain >>> list(chain(*x)) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Or, it can be done very easily in a single list comprehension:
>>> x=[["a","b","c"], ["d","e","f"], ["g","h","i","j"]] >>> [j for i in x for j in i] ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Or via reduce()
:
>>> from operator import add >>> reduce(add, x) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With