2010-09-21 15 views
5

Was ist der Unterschied in diesen beiden Aussagen in Python?Python: Was bedeutet hier []?

var = foo.bar 

und

var = [foo.bar] 

Ich denke, es var in eine Liste macht foo.bar enthalten, aber ich bin nicht sicher. Auch wenn dies das Verhalten ist und foo.bar schon eine Liste ist, was bekommst du jeweils?

Zum Beispiel: wenn foo.bar = [1, 2] würde ich das bekommen?

var = foo.bar #[1, 2] 

und

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

Vielen Dank für schnelle und klare Antworten. –

+1

Wenn Sie es versucht haben, was haben Sie gesehen? Welches Tutorial verwendest du? –

Antwort

14

[] ist eine leere Liste.

[foo.bar] ist die Schaffung einer neuen Liste ([]) mit foo.bar als das erste Element in der Liste, die dann durch seinen Index referenziert werden kann:

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

So Ihre Vermutung, dass Ihre Zuordnung von foo.bar = [1,2] genau richtig .

Wenn Sie noch nicht haben, empfehle ich, mit dieser Art von Sache in der interaktiven Interpreter Python zu spielen. Es macht es recht einfach:

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

Ich denke, es var in eine Liste mit foo.bar macht, aber ich bin nicht sicher. Auch wenn dies das Verhalten ist und foo.bar schon eine Liste ist, was bekommst du jeweils?

  • Ja, erstellt es eine neue Liste. Wenn foo.bar bereits eine Liste ist, wird daraus einfach eine Liste mit einer Liste.

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

Ja, es macht eine Liste ein Element enthält, foo.bar.

Wenn foo.bar [1,2] ist, erhalten Sie tatsächlich [[1,2]].

Zum Beispiel

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

Um ein wenig zu erarbeiten mehr auf genau diesem Beispiel

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

so ziemlich bedeutet, es ist ein Array/Liste von Sachen mit foo.bar das erste Element sein in der Liste/im Array.