2016-06-21 17 views
-11

kann jemand mir helfen, um herauszufinden Unterschied zwischenUnterschiede zwischen für ... in und für ... .. in

for abc in xyz 

und

for abc, n in xyz 

ich in ersten Fall weiß jeden Buchstaben wird abc in jeder Iteration zugewiesen. Wie unterscheidet es sich von 2. Fall

+0

Okay, ich habe die Frage bearbeitet – Aakash

+1

Was ist 'xyz'? Eine Liste, ein Diktat, ...? –

Antwort

2
xyz=[(3,8),(23,13),(89,34)] 
for abc, n in xyz: print(abc, " ## ",n) 

Ergebnis:

3 ## 8 
23 ## 13 
89 ## 34 
1

Auf den ersten beiden Linien die : am Ende fehlen.

Die erste iteriert über die Zeichenfolge 'xyz'. Dies macht eine Iteration pro Zeichen. Der zweite iteriert über die Variable xyz. Dies könnte alles sein, daher kann nichts über die resultierende Iteration gesagt werden.

Die erste Version weist den Eintrag der Variablen abc zu. Die Sekunde erforderte das Element (pro Iteration) als ein Paar, wie ein 2-Tupel. Der erste Wert wird abc, der andere n zugewiesen. Ein Beispiel:

for i, character in enumerate('abc'): 
    print(i, character) 

Ergebnis:

0 a 
1 b 
2 c 
+0

Die Frage wurde bearbeitet. Nun ist 'xyz' in beiden Fällen eine Variable. –

+0

@Aakash Dann antworte bitte: Was ist 'xyz'? Eine Zeichenfolge, eine Liste, ein Diktat? Was sind die Mitglieder? –

0

Dies tut in einer Schleife "Tupel-Auspacken". Was ist Tupel-Entpacken?

>>> t = ("foo", "bar") 
>>> a, b = t 
>>> a 
'foo' 
>>> b 
'bar' 

Dies funktioniert nur, wenn das Tupel die gleiche Anzahl von Elementen hat, da es Variablen Sie es in entpacken. Wenn Sie eine Liste (oder einen Generator) von Tupeln haben, können Sie dasselbe in einer Schleife tun.

Einige Beispiele:

>>> for a, b in zip("abc", "123"): 
...  print(a, b) 
... 
('a', '1') 
('b', '2') 
('c', '3') 
>>> for i, e in enumerate("abc"): 
...  print(i, e) 
... 
(0, 'a') 
(1, 'b') 
(2, 'c') 
0

Der Unterschied besteht darin, dass for abc, n in xyz zwei Elemente aus xyz entpackt wird, zum Beispiel, wenn Sie eine Liste von Listen wie xyz=[[1,2],[3,4]] für jede Iteration haben Sie die Elemente aus der inneren Liste erhalten . Wenn Sie jedoch xyz[[1,2,3],[4,5,6]] hatten und versuchen, for abc, n in xyz zu tun, erhalten Sie einen Fehler, da drei Elemente zu entpacken sind, dann sollten Sie for abc, n, a in xyz tun.

Wenn Sie for abc in xyz tun, dann erhalten Sie jede innere Liste (aber nicht ihre Elemente für getrennt). Probieren Sie diese Beispiele:

xyz=[[1,2],[3,4]] 
for abc in xyz: 
    print abc 

for abc, n in xyz: 
    print "first element", abc 
    print "second element", n 

xyz = [[1,2,3],[4,5,6]] 

# in this case you will get an error 
for abc, n in xyz: 
    print "first element", abc 
    print "second element", n 

# this one will work 
for abc, n, a in xyz: 
    print "first element", abc 
    print "second element", n 
    print "third element", a 
Verwandte Themen