2011-02-09 9 views
12

Considera una lista >>> l=[1,2,3].Python: Perché usare "lista [:]" quando "lista" si riferisce alla stessa cosa?

Qual è il vantaggio dell'utilizzo di >>> l[:] quando >>> l stampa la stessa cosa di ex?

Grazie.

+5

Cosa ti fa pensare che sono la stessa cosa? Hai usato la funzione 'id()' per confermarlo? –

+1

Hanno stampato lo stesso valore. Questo mi ha fatto pensare così. Mi chiedevo perché perdere tempo scrivendo caratteri extra quando otteniamo lo stesso risultato senza [:]. Mai saputo di 'id()'. Grazie per la segnalazione. – Dharmit

+5

@Dharmit: Va bene, non essere intimidito! Stai imparando ed è ovvio porre questa domanda. E 'stata una buona domanda. Cominciamo da qualche parte, per non dimenticare che anche noi facevamo queste domande quando stavamo imparando :) – user225312

risposta

35

Crea una copia (superficiale).

>>> l = [1,2,3] 
>>> m = l[:] 
>>> n = l 
>>> l.append(4) 
>>> m 
[1, 2, 3] 
>>> n 
[1, 2, 3, 4] 
>>> n is l 
True 
>>> m is l 
False 
+5

+1: Sono ** non ** la stessa cosa. –

+6

+20 per qualcosa di base (che è stato già proposto prima qui, è stato spiegato in altre centinaia di domande che lo utilizzano, è nel tutorial ufficiale e probabilmente nella maggior parte degli altri, ecc.) ... – delnan

+3

@delnan: Questo è il magia di SO ;-) – user225312

12

l[:] si chiama fetta di notazione. Può essere utilizzato per estrarre solo alcuni degli elementi nell'elenco, ma in questo caso i limiti vengono omessi in modo da restituire l'intera lista, ma a causa della sezione, questo sarà effettivamente un riferimento a un elenco diverso da l che contiene gli stessi elementi Questa tecnica viene spesso utilizzata per creare copie o cloni superficiali.

http://docs.python.org/tutorial/introduction.html#lists