Seite 1 von 1
Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Dienstag 25. Juni 2013, 12:10
von StefanLawl
Hallo, ich benutze des öfteren mal so etwas wie
Code: Alles auswählen
x=0
for i, element in enumerate(liste):
x+=1
.....
.....
und
Code: Alles auswählen
a,b,c = 0,0,0
for m in liste:
if '....' in m:
a+=1
elif '...' in m:
b+=1
elif '....' in m:
c+=1
....
oder auch gerne etwas wie
Code: Alles auswählen
liste = []
for .... in ....:
if x not in liste:
liste.append(x)
Da ich dieses "
Variablen"-im-voraus-erstellen nicht sonderlich schön finde und mir sicher bin, dass es da definitiv elegantere Lösungen gibt, dachte ich mir, ich wende mich an euch.
Vielen Dank schon mal!
Re: Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Dienstag 25. Juni 2013, 12:16
von EyDu
Hallo.
Für das zweite Beispiel bieten sich ein (default)dict oder ein collections.Counter an, für das letzte set. Bei dem ersten Beispiel solltest du noch sagen, was du überhaupt machen willst. Da nach der Schleife i=x gilt, kannst du statt des x einfach i verwenden.
Re: Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Dienstag 25. Juni 2013, 12:22
von StefanLawl
Danke für die schnelle Antwort-
EyDu hat geschrieben:Hallo.
Für das zweite Beispiel bieten sich ein (default)dict oder ein collections.Counter an, für das letzte set. Bei dem ersten Beispiel solltest du noch sagen, was du überhaupt machen willst. Da nach der Schleife i=x gilt, kannst du statt des x einfach i verwenden.
Collections hab ich schon öfters von gelesen, werde ich mir wohl mal ansehen. Für das erste Beispiel würde ich x (bzw i) gerne nach der Schleife noch weiter benutzen. enumerate(liste) könnte man auch ersetzen mit xrange(50,500).
Stefan
Re: Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Dienstag 25. Juni 2013, 12:39
von BlackJack
@StefanLawl: Das erste Beispiel ist immer noch nicht klarer, denn auch wenn Du da `x` einfach weglässt, kannst Du `i` danach weiter benutzen (vorausgesetzt die Schleife ist mindestens einmal durchlaufen worden).
Re: Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Dienstag 25. Juni 2013, 21:57
von StefanLawl
BlackJack hat geschrieben:@StefanLawl: Das erste Beispiel ist immer noch nicht klarer, denn auch wenn Du da `x` einfach weglässt, kannst Du `i` danach weiter benutzen (vorausgesetzt die Schleife ist mindestens einmal durchlaufen worden).
BlackJack hat geschrieben:kannst Du `i` danach weiter benutzen
Das war mir neu

Vielen Dank schon ein mal soweit.
Was ich noch an den Beispielen zeigen wollte, dass mir das Erstellen von leeren Listen/
Variablen nicht gefällt, dafür müsste es doch andere Wege geben, oder nicht? Am nervigsten finde ich das im 3. Beispiel.
Danke im Voraus,
Stefan
Re: Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Dienstag 25. Juni 2013, 22:54
von BlackJack
@StefanLawl: Das hat EyDu doch schon beantwortet. `set()` und ein Generatorausdruck. Es sei denn eine Reihenfolge soll erhalten bleiben.
Re: Kann man folgende Codestücke einfacher ausdrücken?
Verfasst: Mittwoch 26. Juni 2013, 14:38
von knutsen
stimmt, sehe ich genauso!