2013-11-25 20 views
49

Próbuję dowiedzieć się, jak dołączyć wiele wartości do listy w Pythonie. Wiem, że istnieje kilka metod, takich jak ręczne wprowadzanie wartości lub wykonywanie operacji dołączania w pętlach for lub append i extend.Jak dołączyć wiele wartości do listy w Pythonie

Zastanawiam się jednak, czy istnieje lepszy sposób na zrobienie tego? Może jakiś pakiet lub funkcja?

Jestem 1 dzień w Pythonie, więc proszę, wybacz mi, jeśli zadam naiwne pytanie.

Dziękuję bardzo. :)

+8

Czy znalazłeś jeszcze [dokumentację list] (http://docs.python.org/2/library/stdtypes.html#mutable-sequence- typeses)? –

+4

Powiedziałeś, że wiesz, że jest kilka metod, aby to zrobić, ale nie pokazuj tego, co próbujesz, ani wyjaśnij, dlaczego metody, które znasz, nie są wystarczająco dobre. – Useless

+0

Proszę określić * bardziej czysty niż 'extend()' *. –

Odpowiedz

118

Możesz użyć sequence method list.extend, aby rozszerzyć listę o wiele wartości z dowolnego rodzaju iterowalnego, będącego kolejną listą lub inną rzeczą, która dostarcza ciąg wartości.

>>> lst = [1, 2] 
>>> lst.append(3) 
>>> lst.append(4) 
>>> lst 
[1, 2, 3, 4] 

>>> lst.extend([5, 6, 7]) 
>>> lst.extend((8, 9, 10)) 
>>> lst 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

>>> lst.extend(range(11, 14)) 
>>> lst 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 

Więc można użyć list.append() dołączyć pojedynczą wartość i list.extend() dołączyć wielu wartości.

+1

Trochę skomplikowane, aby przedstawić generatory komuś pierwszego dnia korzystania z Pythona. –

+0

@DanielRoseman Moim celem jest, że wartości mogą pochodzić z * dowolnego * rodzaju sekwencji iterowalnej. – poke

+1

Należy zauważyć, że rozszerzenie nie zachowuje struktury elementu, który dodajesz, w porównaniu do 'append()'. W twoim przykładzie używając append, otrzymasz '[1, 2, 3, 4, [5, 6, 7], (8, 9, 10), zakres (11, 14)]'. ** Python 3 ** –

6

Oprócz funkcji append, jeśli przez "wiele wartości" rozumiesz inną listę, możesz po prostu je połączyć.

>>> a = [1,2,3] 
>>> b = [4,5,6] 
>>> a + b 
[1, 2, 3, 4, 5, 6] 
6

Jeśli spojrzeć na official docs zobaczysz tuż poniżej append, extend. Właśnie tego szukasz.

Istnieje również itertools.chain, jeśli bardziej interesuje Cię wydajna iteracja niż skończy się całkowicie wypełniona struktura danych.

Powiązane problemy