2012-06-24 3 views

risposta

7

Utilizzando list.append modifica l'elenco sul posto - il suo risultato è None. Usando + crea una nuova lista.

0

+ è un operatore binario che produce una nuova lista risultante da una concatenazione di due elenchi di operandi. append è un metodo di istanza che aggiunge un singolo elemento a un elenco esistente.

P.S. Intendevi 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

Ci sono due principali differenze. La prima è che + è più vicino al significato di extend rispetto a 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] 

L'altro, più importante, la differenza è che i metodi di lavoro sul posto: extend è in realtà come += - in realtà, è esattamente lo stesso comportamento di += con la differenza che può accettare qualsiasi iterabile, mentre += può solo prendere un'altra lista.