2016-02-24 6 views
7

Ho provato questo molto.Come aggiungere un nuovo valore a un elenco senza utilizzare 'append()' e quindi memorizzare il valore in un elenco appena creato?

>>> x = [4,5] 
>>> y = x.append(7) 
>>> print y 
None 
>>>print x 
[4, 5, 7] 

Com'è possibile?

Quando provo a memorizzare i valori nel nuovo elenco e lo stampo, risulta None e cambia anche l'elenco corrente `x.

C'è qualche altro modo per farlo in Python?

+0

Non è possibile farlo, basta fare 'y = 7' quindi' x.append (y) '. – jonrsharpe

risposta

4

Perché la funzione append() modifica l'elenco e restituisce None.

Una delle migliori pratiche per fare ciò che si vuole fare è utilizzare l'operatore +.

Prendiamo il tuo esempio:

>>> x = [4, 5] 
>>> y = x + [7] 
>>> x 
[4, 5] 
>>> y 
[4, 5, 7] 

L'operatore + crea una nuova lista e lascia la lista originale invariata.

2

Si può fare

x = [4,5] 
y = x + [7] 
# x = [4, 5] 
# y = [4, 5, 7] 
4

Questo è possibile perché x.append() è un metodo di lista x che muta l'elenco sul posto. Non è necessario un valore di ritorno poiché tutto ciò che il metodo deve fare è eseguire un effetto collaterale. Pertanto, restituisce None, a cui viene assegnata la variabile .

penso che si desidera creare una copia di x e aggiungere a questo:

y = x[:] 
y.append(7) 

o assegnare y il risultato di un'operazione di lista che in realtà crea un nuovo elenco:

y = x + [7] 
Problemi correlati