for loop frage

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
dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

hi.

Ich bin am verzweifeln :)
Ich habe mir 2 listen erstellt und wollte diese mit for vergleichen (falls es einen besseren weg als for gibt bin ich für alles offen).
leider steige icht nicht genau dahinter und bon auf dem falschen weg :(

Mein ziel ist eigentlich das er mir "nur" die 2 skips, sowie "nur" die 4 fine's ausgibt..

Code: Alles auswählen

import re

tanken = "/home/tanken/e10/","/home/tanken/shell/","/home/tanken/super/","/home/tanken/benzin/","/home/tanken/super_plus/","/home/tanken/aral/"
skips = "/home/tanken/aral/","/home/tanken/shell/"

for tank in tanken:
        for skip in skips:
                if re.match(tank, skip):
                        print "skipped", tank, skip
                else:
                        print "fine", tank

output:
fine: /home/tanken/e10/
fine: /home/tanken/e10/
fine: /home/tanken/shell/
skipped: /home/tanken/shell/ /home/tanken/shell/
fine: /home/tanken/super/
fine: /home/tanken/super/
fine: /home/tanken/benzin/
fine: /home/tanken/benzin/
fine: /home/tanken/super_plus/
fine: /home/tanken/super_plus/
skipped: /home/tanken/aral/ /home/tanken/aral/
fine: /home/tanken/aral/

So sollte es eigentlicht sein:
skipped: /home/tanken/shell/ /home/tanken/shell/
fine: /home/tanken/e10/
fine: /home/tanken/super/
fine: /home/tanken/benzin/
fine: /home/tanken/super_plus/
skipped: /home/tanken/aral/ /home/tanken/aral/
BlackJack

@dirtylion: Du gibst für jede `tank`/`skip`-Kombination etwas aus. Du musst das so schreiben, dass nur für jeden `tank`-Wert *eine* Ausgabe gemacht wird. Also darfst Du in der `skip`-Schleife nur *feststellen* ob mindestens eines der `skip`\s zutrifft und dann erst nach der `skip`-Schleife eine dementsprechende Ausgabe machen.

Schau Dir in dem Zusammenhang mal Generatorausdrücke und die `any()`-Funktion an.
dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

hast du evtl. ein sample
ich bin recht neu im bereich python

das wäre sehr nett :)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann werfe ich gleich mal ``break`` und ``else`` für Schleifen in den Raum.
Das Leben ist wie ein Tennisball.
dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

mit break habe ich es versucht aber damit bekomme ich es leider nicht richtig hin :(
dirtylion
User
Beiträge: 19
Registriert: Sonntag 13. März 2011, 13:33

kann mir bitte jemand ein example geben, ich stehe auf dem schlauch :(
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Naja, ist doch bloß sowas:

Code: Alles auswählen

Für jeden Wert in 'tanken':
  wenn der wert in 'skips' vorkommt: # brauchst du wirklich RE's?
    'wert Übersprungen' ausgeben
  sonst:
    wert ausgeben
.. das sieht python schon sehr ähnlich
Antworten