2011-02-09 7 views
12

Considere una lista >>> l=[1,2,3].Python: ¿Por qué usar "list [:]" cuando "list" se refiere a lo mismo?

¿Cuál es la ventaja de usar >>> l[:] cuando >>> l imprime lo mismo que la anterior?

Gracias.

+5

Lo que hace pensar que son la misma cosa? ¿Usó la función 'id()' para confirmar eso? –

+1

Imprimieron el mismo valor. Eso me hizo pensar eso. Me preguntaba por qué uno debería perder el tiempo escribiendo caracteres adicionales cuando obtuvimos el mismo resultado sin [:]. Nunca supe sobre 'id()'. Gracias por señalar eso. – Dharmit

+5

@Dharmit: ¡Está bien, no te intimides! Usted está aprendiendo y es obvio hacer esa pregunta. Esa fue una buena pregunta. Todos comenzamos en algún lado, para que no olvidemos que también solíamos hacer tales preguntas cuando estábamos aprendiendo :) – user225312

Respuesta

35

Crea una copia (poco profunda).

>>> 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: ** No son lo mismo ** en absoluto. –

+6

+20 por algo tan básico (que se ha preguntado de manera convincente antes, se ha explicado en otras cien preguntas al usarlo, está en el tutorial oficial y en muchos otros, etc.) ... – delnan

+3

@delnan: Esa es la magia de SO ;-) – user225312

12

l[:] se llama slice notación. Se puede usar para extraer solo algunos de los elementos de la lista, pero en este caso los límites se omiten para que se devuelva toda la lista, pero debido a la porción, esto realmente será una referencia a una lista diferente a l que contiene los mismos elementos Esta técnica se usa a menudo para hacer copias superficiales o clones.

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