Kann man folgende Codestücke einfacher ausdrücken?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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!
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
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).
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

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 :oops: 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
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
BlackJack

@StefanLawl: Das hat EyDu doch schon beantwortet. `set()` und ein Generatorausdruck. Es sei denn eine Reihenfolge soll erhalten bleiben.
Benutzeravatar
knutsen
User
Beiträge: 5
Registriert: Mittwoch 26. Juni 2013, 07:16

stimmt, sehe ich genauso!
Antworten