2012-06-24 6 views

Odpowiedz

7

Korzystanie list.append modyfikuje listę w miejscu - jego wynik jest None. Użycie + tworzy nową listę.

0

+ to operator binarny, który tworzy nową listę wynikającą z połączenia dwóch list argumentów. append jest metodą instancji, która dołącza pojedynczy element do istniejącej listy.

P.S. Czy miałeś na myśli extend?

2
>>> L1 = [1,2,3] 
>>> L2 = [97,98,99] 
>>> 
>>> # Mutate L1 by appending more values: 
>>> L1.append(4) 
>>> L1 
[1, 2, 3, 4] 
>>> 
>>> # Create a new list by adding L1 and L2 together 
>>> L1 + L2 
[1, 2, 3, 4, 97, 98, 99] 
>>> # L1 and L2 are unchanged 
>>> L1 
[1, 2, 3, 4] 
>>> L2 
[97, 98, 99] 
>>> 
>>> # Mutate L2 by adding new values to it: 
>>> L2 += [999] 
>>> L2 
[97, 98, 99, 999] 
10

Istnieją dwie główne różnice. Pierwszym jest to, że + jest bliższy znaczeniowo extend niż append:

>>> a = [1, 2, 3] 
>>> a + 4 
Traceback (most recent call last): 
    File "<pyshell#13>", line 1, in <module> 
    a + 4 
TypeError: can only concatenate list (not "int") to list 
>>> a + [4] 
[1, 2, 3, 4] 
>>> a.append([4]) 
>>> a 
[1, 2, 3, [4]] 
>>> a.extend([4]) 
>>> a 
[1, 2, 3, [4], 4] 

Drugi, bardziej widoczne, różnica polega na tym, że metody pracy w miejscu: extend jest rzeczywiście jak += - w rzeczywistości, to ma dokładnie takie samo zachowanie, jak +=, z tym wyjątkiem, że może zaakceptować każdą iterowalną, podczas gdy += może zająć tylko inną listę.

Powiązane problemy