2012-11-24 9 views

Répondre

3

Essayez ceci:

a = [['a'],['b']] 

a = [item for list in a for item in list] 
print a 
>>>['a', 'b'] 
+0

cela semble fonctionner parfaitement! Merci à tous pour votre aide! –

2

Essayez:

[i[0] for i in [['a'], ['b']] 
>>> ['a','b'] 
+1

Qu'en est-il de 2 éléments sous-liste? –

+1

cela ne fonctionnera pas pour [['a', 'b'], ['c', 'd']] '. –

+3

@AshwiniChaudhary travail de cette ligne dépend d'une question qui a été posée. – alexvassel

2

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)

+0

Que diriez-vous de - 'sum (l, [])'? –

+0

@RohitJain Cela est également possible, mais probablement pas aussi efficace que 'itertools'. – arshajii

+0

Hmm. Eh bien, aucune idée sur la performance. Donc, je vais prendre votre point. –

Questions connexes