2010-09-21 19 views
5

Qual è la differenza tra queste due istruzioni in python?Python: che cosa significa l'uso di [] qui?

var = foo.bar 

e

var = [foo.bar] 

penso che sta facendo var in un elenco contenente foo.bar ma non sono sicuro. Anche se questo è il comportamento e foo.bar è già una lista che cosa ottieni in ogni caso?

Ad esempio: se foo.bar = [1, 2] otterrei questo?

var = foo.bar #[1, 2] 

e

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

Grazie per risposte rapide e chiare. –

+1

Quando l'hai provato, cosa hai visto? Inoltre, quale tutorial stai usando? –

risposta

14

[] è un elenco vuoto.

[foo.bar] sta creando una nuova lista ([]) con foo.bar come primo elemento della lista, che può quindi essere riferito da suo indice:

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

Così il vostro indovinare che la cessione di foo.bar = [1,2] è esattamente a destra .

Se non lo hai già, ti consiglio di divertirti con questo genere di cose nell'interprete interattivo Python. Lo rende abbastanza facile:

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

Penso che sta facendo var in un elenco contenente foo.bar ma non sono sicuro. Anche se questo è il comportamento e foo.bar è già una lista che cosa ottieni in ogni caso?

  • Sì, crea una nuova lista.

  • Se foo.bar è già un elenco, diventerà semplicemente un elenco contenente un elenco.

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

Sì, è fare un elenco che contiene un solo elemento, foo.bar.

Se foo.bar è [1,2], si ottiene effettivamente [[1,2]].

Per esempio,

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

di elaborare un po 'di più su questo esempio esatto,

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

Che praticamente significa che è una matrice/lista di cose con foo.bar essendo la prima voce nella lista/matrice.