Seite 1 von 1

Probleme bei der Quicksortimplementierung. Hilfe :S

Verfasst: Montag 19. Dezember 2011, 11:32
von cherry_sunshine
Hallo..ich arbeite momentan an dem Quicksortalgorithmus. Im Internet habe ich mir zur Hilfe verschiedene Implementierungen angeschaut und bin dabei auf eine gestoßen, die mich an 2 Stellen ziemlich verwirrt, da ich dem noch nie begegnet bin:
einmal:
"i for i in liste if i < pivot " wie darf ich das mit den 3 i's interpretieren?
sorry, mir erscheint das "i for i" irgendwie sinnlos...der Rest ergibt ja sinn, aber in dem Punkt bin ich überfragt... :roll:

und das zweite:
if __name__ == "__main__":
Das kann ich mir leider überhaupt nicht erklären. Was ist mit __name__ und was ist mit __main__ gemeint?

Tut mir leid, wenn die Fragen euch eventuell blöd erscheinen. Ich bin Einsteigerin, was das Programmieren zu tun hat und daher fehlt mir jegliches Grundwissen.

Re: Probleme bei der Quicksortimplementierung. Hilfe :S

Verfasst: Montag 19. Dezember 2011, 11:49
von frabron

Code: Alles auswählen

i for i in liste if i < pivot
ist eine list-comprehension, und __name__ ist der Name des Moduls, das ist kannst du hier nachlesen. Der __name__ des Moduls ist gleich __main__, wenn du auf der Konsole

Code: Alles auswählen

python meinmodul.py
aufrufst. So kann man steuern, was passieren soll, wenn das Skript importiert wird in ein anderes Modul, oder wenn man es von der Kommandozeile aufruft.

Nachtrag:
Die list-comprehension könnte man auch so schreiben:

Code: Alles auswählen

elements = []
for element in liste:
    if element < pivot:
        elements.append(element)

Re: Probleme bei der Quicksortimplementierung. Hilfe :S

Verfasst: Montag 19. Dezember 2011, 11:50
von sparrow
Zu 1:
das ist syntaktisch korrekt, das ganze heißt List Comprehension und wird hier erklärt: http://docs.python.org/tutorial/datastr ... rehensions
Allerdins hast du es in deinem Post aus dem Zusammenhang gerissen, denn korrekt müsste es so aussehen damit es Sinn macht:

Code: Alles auswählen

[i for i in liste if i < pivot]
Die eckigen Klammern stehen da ja nicht grundlos ;)

zu 2)
Das ist der übliche Weg um Code nur dann ausführen zu lassen wenn es nicht über den Import-Befehl importiert wurde. Dann ist __name__ nämlich "__main__".

Re: Probleme bei der Quicksortimplementierung. Hilfe :S

Verfasst: Montag 19. Dezember 2011, 12:35
von Hyperion
sparrow hat geschrieben: Die eckigen Klammern stehen da ja nicht grundlos ;)
Es könnten auch runde sein, wenn es sich um einen Generatorausdruck handelte ;-) Aber es stimmt schon, dass der Kontext wichtig ist.

Re: Probleme bei der Quicksortimplementierung. Hilfe :S

Verfasst: Dienstag 20. Dezember 2011, 04:46
von Leonidas
Hyperion hat geschrieben:Es könnten auch runde sein, wenn es sich um einen Generatorausdruck handelte ;-)
Oder sie können auch fehlen, wenn es ein Generatorausdruck in einem Funktionsaufruf als einziger Parameter ist.