join list of lists in python
--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Lost Meadow
--
Chapters
00:00 Join List Of Lists In Python
00:24 Accepted Answer Score 715
00:39 Answer 2 Score 365
00:50 Answer 3 Score 272
01:12 Answer 4 Score 53
01:24 Answer 5 Score 33
01:57 Thank you
--
Full question
https://stackoverflow.com/questions/7164...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python
#avk47
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Lost Meadow
--
Chapters
00:00 Join List Of Lists In Python
00:24 Accepted Answer Score 715
00:39 Answer 2 Score 365
00:50 Answer 3 Score 272
01:12 Answer 4 Score 53
01:24 Answer 5 Score 33
01:57 Thank you
--
Full question
https://stackoverflow.com/questions/7164...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python
#avk47
ACCEPTED ANSWER
Score 730
import itertools
a = [['a','b'], ['c']]
print(list(itertools.chain.from_iterable(a)))
This gives
['a', 'b', 'c']
ANSWER 2
Score 374
x = [["a","b"], ["c"]]
result = sum(x, [])
ANSWER 3
Score 275
If you're only going one level deep, a nested comprehension will also work:
>>> x = [["a","b"], ["c"]]
>>> [inner
... for outer in x
... for inner in outer]
['a', 'b', 'c']
On one line, that becomes:
>>> [j for i in x for j in i]
['a', 'b', 'c']
ANSWER 4
Score 33
This is known as flattening, and there are a LOT of implementations out there.
How about this, although it will only work for 1 level deep nesting:
>>> x = [["a","b"], ["c"]]
>>> for el in sum(x, []):
... print el
...
a
b
c
From those links, apparently the most complete-fast-elegant-etc implementation is the following:
def flatten(l, ltypes=(list, tuple)):
ltype = type(l)
l = list(l)
i = 0
while i < len(l):
while isinstance(l[i], ltypes):
if not l[i]:
l.pop(i)
i -= 1
break
else:
l[i:i + 1] = l[i]
i += 1
return ltype(l)