Seite 1 von 1

viele for-Schleifen

Verfasst: Montag 24. Januar 2011, 14:35
von Xynon1
Wie Sinnvoll ist es bei doppelten oder dreifachen for-Schleifen "itertools.product()" zu nutzen? Folgendes Beispiel:

Code: Alles auswählen

for x in xrange(10):
    for y in xrange(5):
        for z in xrange(2):
            do_something
Also rein von der Übersichtlichkeit finde ich

Code: Alles auswählen

for x, y, z in itertools.product(xrange(10), xrange(5), xrange(2)): do_something
wesentlich hübscher, vorallem wenn do_something noch ein paar ifs hat. Aber was haltet ihr davon?

Re: viele for-Schleifen

Verfasst: Montag 24. Januar 2011, 14:55
von Hyperion
Kommt immer auch ein wenig auf die Konstellation an. Wenn Du anhand des ersten Items ggf. gar nicht mehr bis in die Tiefe vordringst, ist product() natürlich fehl am Platze.

Ach ja, "do_something" gehört eingerückt ;-)

Re: viele for-Schleifen

Verfasst: Montag 24. Januar 2011, 15:08
von Xynon1
Es ging mir vorallem um Sachen wo halt alle Daten die von den Schleifen generiert werden eigentlich nur in der tiefsten/innersten Schleife benötigt werden.

und das Einrücken - wird nie wieder vorkommen :mrgreen: , ging so schön von der Hand, war eigentlich auch nicht geplant.

Re: viele for-Schleifen

Verfasst: Montag 24. Januar 2011, 18:11
von syntor
Ich würde das lieber, nach Möglichkeit versteht sich, in verschiedene Methoden aufteilen. Insbesondere wenn du zusätzlich noch if/else Statements (was ist hier der deutsche Ausdruck?) hast.

Dies hilft, die Komplexität des Codes zu reduzieren. Ein Thema das du dir hierzu ansehen könntest, ist "Cyclomatic Complexity".

Hier ein Plugin dazu für vim und vom gleichen Autor ein Video dazu wo er zeigt, wie die Komplexität seines Plugins reduziert hat. Ich denke dies zeigt ein bisschen, was ich mit meinem Vorschlag gemeint habe.

Re: viele for-Schleifen

Verfasst: Montag 24. Januar 2011, 18:30
von BlackJack
@syntor: "Statement" wird in der Regel mit "Anweisung" übersetzt.

Re: viele for-Schleifen

Verfasst: Dienstag 25. Januar 2011, 10:35
von Xynon1
@syntor
So schlimm wie in dem ersten Video..., so kann doch keiner ein Programm ernsthaft schreiben wollen.
Und das ganze in Methoden zu Struckturieren, so weit das möglich ist, ist ja wohl eine selbst verständlichkeit, aber wenn ich halt schlicht die Daten aus den Iterationen in der innersten Schleife benötige, dann ist das nicht gerade Sinvoll. Hier kann man höchstens die innerste Schleife als getrennte Methode schreiben, dann wäre aber nach wie vor das unschöne Aussehen von 3 Schleifen, mit einem Funktionsaufruf am Ende mit "do_somethig(x, y, z)".

Re: viele for-Schleifen

Verfasst: Dienstag 25. Januar 2011, 21:00
von syntor
Das erste Video ist bloss die Demonstration zur Komplexität ;)

Aber ich gebe dir Recht, es geht natürlich nicht immer.