Python "sum" - Convert list-of-lists to a list
Some times you may face the case in which you have a list of lists (or tuples) as follows
lists_list = [ [1, 2], [3, 4], [5, 6] ]
tuples_list = [ (1, 2, 3), (4, 5, 6) ]
and you want to convert them into a single list as follows
alist = [1, 2, 3, 4, 5, 6]
You can use loops and comprehensions of course!
However, the built-in sum function in python can do this
for lists
alist = list(sum(lists_list, []))
for tuples
alist = list(sum(tuples_list, ()))
Hope this was a helpful tip,
Written by Samer S. Meggaly
Related protips
1 Response
A little more readable version might be:
from itertools import chain
list(chain(*lists_list))
list(chain(*tuples_list))
I say more readable because sum is using the specialized implementation of adding two lists (or tuples). Without knowledge of what's going on under the hood, this would likely confuse the reader. The hood is opened when mixing a list and a tuple as elements of the parent list:
>>> m = [[1, 2], (3, 4)]
>>> list(sum(m, []))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list
However, this still work with chain as it only cares that the elements are iterables, not their types.
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Python
Authors
Related Tags
#python
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#