2016-10-12 3 views
2

Bitte lassen Sie mich wissen, wie diese for-Schleife funktioniert.Wie funktioniert diese for-Schleife?

b= [4,5,6] 
for b[-1] in b: 
    print(b[-1]) 

Dieser Code-Schnipsel gibt mir Ausgabe als: -

4 
5 
5 

überprüfte ich es mit Python 2.7

+3

Sie können Ihren Code bei pythonutor.com ausführen, um eine wirklich gute Visualisierung zu erhalten. –

+0

Wo haben Sie diesen Code gefunden? Das Verwenden von kniffligen Ausdrücken wie 'b [-1]' in einem For-Loop-Header ist kein typischer Produktionsqualitätsstil, also vermute ich, dass dies ursprünglich als ein "rate dieses Code-Verhalten" -Rätsel gedacht war. Vielleicht bietet das Teilen der Quelle mit uns einen zusätzlichen nützlichen Kontext. – Kevin

+0

Ja, es war eine Rätselfrage – rjha

Antwort

5

Sie es verstehen können, während der Druck ganz b Liste:

b= [4,5,6] 
for b[-1] in b: 
    print(b) 
    print(b[-1]) 

Ausgabe

[4, 5, 4] # first iteration, you set last element(6) with first element(4) [4,5,6] -> [4,5,4] 
4 
[4, 5, 5] # second iteration, you set last element(4) with element(5), [4,5,4] -> [4,5,5] 
5 
[4, 5, 5] # last iteration, you set last element(5) with element(5), no change 
5 

Also im Grunde jede Iteration wird Ihr letztes Element zum Element, mit dem Sie iterieren.

6

jede Iteration Element i von b gerichtet. Es wird b [-1] (letztes Element von b) zugeordnet und gedruckt. So wird jedem Schritt, dem letzten Element von b (6 vor der Schleife), der Wert des i-ten Elements zugeordnet.

Schließlich wird bei der letzten Iteration der i-te Wert gelesen und der gelesene Wert ist der Wert, der vor der Iteration geschrieben wurde (also 5).

den Code ändern b bei jedem Schritt zu drucken und es wird offensichtlich: (. Verwenden Sie diese Art von Dingen, im wirklichen Leben nicht tun)

b = [4,5,6] 
for b[-1] in b: 
    print(b[-1]) 
    print(b) 

+1

Warum wird '5' in der letzten Iteration und nicht in 6 gedruckt? – Kevin