2016-04-25 9 views
0

Kann mir bitte jemand sagen, was die Funktionalität der äußeren for Schleife im Programm unten:Was macht die äußere for-Schleife in meinem Programm?

for-Schleife
Mylist = [4,67,3,7,65,3,56,] 
maxLengthList = 7 

print ('The all Number for Buble Sort is:', Mylist) 

for i in range(len(Mylist)-1,0,-1): 
    for j in range(i): 
     if Mylist[j]>Mylist[j+1]: 
      temp = Mylist[j] 
      Mylist[j] = Mylist[j+1] 
      Mylist[j+1] = temp 


print('After Buble Sort the Number are:',Mylist) 
+0

Kann nicht verstehen, was genau? Hast du es auch [Wikipedia] (https://en.wikipedia.org/wiki/Bubble_sort) versucht? – MikeJRamsey56

+0

Eine der Schaltflächen beim Schreiben des Posts dient zum Formatieren von Code. Wenn Sie Ihre Antwort so bearbeiten könnten, dass der Code formatiert ist, wird er für uns alle normal und lesbar aussehen. –

+0

Kann nicht verstehen, warum die äußere Schleife Initialisierung, Bereich und Inkrement wie folgt ist: für i in Bereich (len (Mylist) -1,0, -1) ......... Das Programm ist für Bubble-Sortierung –

Antwort

0

Das wird step rückwärts (-1) bei 6 beginnen (len(Mylist)-1) und bei 1 zu stoppen, den letzten Wert vor Stopp (0). Siehe range Dokumentation range(start, stop, step)

>>> range(len(Mylist)-1, 0, -1) 
[6, 5, 4, 3, 2, 1] 
+0

Vielen Dank! Ich verstehe jetzt! Gibt es irgendwelche guten Seiten, wo es diese Grundlagen für Anfänger gibt? –

0

in der for i in range(len(Mylist)-1,0,-1): Linie gibt es drei Argumente für die Range-Funktion. len(Mylist)-1 sagt uns den oberen Wert für unser Sortiment. Die 0 sagt uns den niedrigeren Wert für unser Sortiment. Die -1 ist die Größe der Inkremente, was bedeutet, dass wir, anstatt jedes Mal, wenn wir die Schleife betreten, um 1 zuzunehmen, eins subtrahieren.

Wir beginnen also beim zweiten bis letzten Wert in der Schleife. Die len(Mylist)-1. Wir werden 1, den -1 Teil subtrahieren, jedes Mal, wenn wir durch die for-Schleife gehen, bis wir bei 0

enden und als Referenz die Dokumentation Staaten.

Bereich (stop)

Bereich (Start, Stopp [Schritt])

Dies ist eine vielseitige Funktion erstellen Listen mit arithmetischen. Es wird am häufigsten in For-Schleifen verwendet. Die Argumente müssen ganze Zahlen sein. Wenn das Argument nicht angegeben wird, wird standardmäßig 1 verwendet. Wenn das Startargument nicht angegeben ist, wird standardmäßig 0 verwendet. Das vollständige Formular gibt eine Liste Ganzzahlen [start, start + step, start + 2 * step, ...] zurück. Wenn Schritt positiv ist, ist das letzte Element das größte start + i * step weniger als Stop; Wenn Schritt negativ ist, ist das letzte Element das kleinste start + i > * step größer als Stop. Schritt muss nicht Null sein (oder ValueError wird ausgelöst).

Beispiel:

>>> 
>>> range(10) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> range(1, 11) 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
>>> range(0, 30, 5) 
[0, 5, 10, 15, 20, 25] 
>>> range(0, 10, 3) 
[0, 3, 6, 9] 
>>> range(0, -10, -1) 
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9] 
>>> range(0) 
[] 
>>> range(1, 0) 
[] 
+0

Vielen Dank! Ich habe nur eine Frage. Warum können wir nicht den unteren Bereich beginnend mit 0 und den oberen Bereich bis zum letzten Wert verwenden, d. H. Von 0 bis zum letzten Wert der Liste. –

+0

Es ist nicht notwendig, dies auf die Art und Weise zu tun, wie der Blasensortieralgorithmus funktioniert. Nach dem Durchlaufen der Schleife 'len (Mylist) -1' wird die Liste bereits sortiert. Wenn Sie analysieren, was mit einer kleinen Liste passiert, sehen Sie, dass die Liste nach der Iteration "len (Mylist) -1" sortiert ist. –