Utilisez itertools
, en particulier itertools.chain
(ce qui est beaucoup mieux que de concevoir votre propre façon de le faire):
>>> l = [['a'], ['b']]
>>> print(list(itertools.chain.from_iterable(l)))
['a', 'b']
C'est plus rapide que la solution liste-compréhension pure ainsi:
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'
10000 loops, best of 3: 53.9 usec per loop
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'list(itertools.chain.from_iterable(l))'
10000 loops, best of 3: 29.5 usec per loop
(Tests adaptés de this question)
Look Up "aplatir liste". –
Mis à part le fait qu'il s'agisse d'un doublon, qu'avez-vous essayé? – phant0m