2010-09-21 14 views
5

¿Cuál es la diferencia en estas dos declaraciones en python?Python: ¿Qué significa el uso de [] aquí?

var = foo.bar 

y

var = [foo.bar] 

creo que está haciendo var en una lista que contiene foo.bar pero no estoy seguro. Además, si este es el comportamiento y foo.bar ya es una lista, ¿qué obtienes en cada caso?

Por ejemplo: si foo.bar = [1, 2] me sale esto?

var = foo.bar #[1, 2] 

y

var = [foo.bar] #[[1,2]] where [1,2] is the first element in a multidimensional list 
+0

Gracias por las respuestas rápidas y claras. –

+1

Cuando lo probaste, ¿qué viste? Además, ¿qué tutorial estás usando? –

Respuesta

14

[] es una lista vacía.

[foo.bar] es la creación de una nueva lista ([]) con foo.bar como el primer elemento de la lista, que puede ser referenciado por su índice:

var = [foo.bar] 
var[0] == foo.bar # returns True 

Por lo que su suposición de que su asignación de foo.bar = [1,2] es exactamente correcto .

Si aún no lo has hecho, te recomiendo que juegues con este tipo de cosas en el intérprete interactivo de Python. Esto hace que sea muy fácil:

>>> [] 
[] 
>>> foobar = [1,2] 
>>> foobar 
[1, 2] 
>>> [foobar] 
[[1, 2]] 
1

Creo que está haciendo var en una lista que contiene foo.bar pero no estoy seguro. Además, si este es el comportamiento y foo.bar ya es una lista, ¿qué obtienes en cada caso?

  • Sí, se crea una nueva lista.

  • Si foo.bar ya es una lista, simplemente se convertirá en una lista, que contiene una lista.

    h[1] >>> l = [1, 2] 
    h[1] >>> [l] 
    [[1, 2]] 
    h[3] >>> l[l][0] 
    [1, 2] 
    
3

sí, es hacer una lista que contiene un elemento, foo.bar.

Si foo.bar es [1,2], de hecho obtiene [[1,2]].

Por ejemplo,

>> a=[] 
>> a.append([1,2]) 
>> a[0] 
[1,2] 
>> b=[[1,2]] 
>> b[0] 
[1,2] 

Para elaborar un poco más en ese ejemplo exacta,

>> class Foos: 
>> bar=[1,2] 
>> foo=Foos() 
>> foo.bar 
[1,2] 
>> a=[foo.bar] 
>> a 
[[1,2]] 
>> a[0] 
[1,2] 
0

que más o menos significa que es una matriz/lista de cosas con foo.bar siendo el primer elemento en la lista/matriz.

Cuestiones relacionadas