2013-01-03 16 views
14

Mam kilka list, które chcę dołączyć do pojedynczej listy, która jest rodzajem "głównej" listy w programie, który próbuję napisać. Czy istnieje sposób, aby to zrobić w jednym wierszu kodu, a nie jak 10? Jestem początkujący więc nie mam pojęcia ...Możliwe dołączanie wielu list jednocześnie? (Python)

dla lepszego obrazu moje pytanie, co zrobić, jeśli miałem tych list:

x = [1, 2, 3] 
y = [4, 5, 6] 
z = [7, 8, 9] 

i chcesz dołączyć yiz x. Zamiast wykonywać:

x.append(y) 
x.append(z) 

Czy istnieje sposób, aby to zrobić w jednym wierszu kodu? Próbowałem już:

x.append(y, z) 

I to nie zadziała.

+2

Czy naprawdę chcesz '.append' lub' .extend'? Czy rozumiesz różnicę? –

+0

Jakiej mocy wyjściowej oczekujesz? – Volatility

+0

Nie, nigdy wcześniej nie widziałem .extend, co to robi? –

Odpowiedz

26
x.extend(y+z) 

powinien robić to, co chcesz

lub

x += y+z 

lub nawet

x = x+y+z 
+3

Uwaga ten ostatni jest nieco inny - tworzysz nową listę i przypisujesz ją do 'x', zamiast zmieniać' x' na miejscu. –

+0

Próbowałem .extend i działało idealnie. Dzięki za pomoc. –

+0

Metoda rozszerzania powraca dla mnie. – zakdances

14

Rozszerzenie mój komentarz

In [1]: x = [1, 2, 3] 
In [2]: y = [4, 5, 6] 
In [3]: z = [7, 8, 9] 
In [4]: from itertools import chain 
In [5]: print list(chain(x,y,z)) 
[1, 2, 3, 4, 5, 6, 7, 8, 9] 
+0

Prosta forma opcji itertools, która okazała się przydatna: 'itertools.chain ([1, 2, 3], [4, 5, 6], [7, 8 , 9]) '=' [1, 2, 3, 4, 5, 6, 7, 8, 9] ' – NuclearPeon

0

równoważne wyżej odpowiedź, lecz dostatecznie różnią się od warto wspomnieć:

my_map = { 
    'foo': ['a', 1, 2], 
    'bar': ['b', '2', 'c'], 
    'baz': ['d', 'e', 'f'], 
} 
list(itertools.chain(*my_map.values())) 
['d', 'e', 'f', 'a', 1, 2, 'b', '2', 'c'] 

w powyższym wyrażeniu * jest ważna dla groking wynik jako argumentach do sieci, to jest takie same jak przed łańcuchu (x, y, z). Zwróć też uwagę, że wynik jest uporządkowany hash.

3

Można użyć sum funkcji z wartością początkową (pustą listę) wskazano:

a = sum([x, y, z], []) 

Jest to szczególnie bardziej odpowiednie, jeśli chcesz dołączyć dowolną liczbę list.