Seite 1 von 1

for loop frage

Verfasst: Freitag 15. April 2011, 17:28
von dirtylion
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/

Re: for loop frage

Verfasst: Freitag 15. April 2011, 17:34
von 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.

Re: for loop frage

Verfasst: Freitag 15. April 2011, 17:39
von dirtylion
hast du evtl. ein sample
ich bin recht neu im bereich python

das wäre sehr nett :)

Re: for loop frage

Verfasst: Freitag 15. April 2011, 17:39
von EyDu
Dann werfe ich gleich mal ``break`` und ``else`` für Schleifen in den Raum.

Re: for loop frage

Verfasst: Freitag 15. April 2011, 17:54
von dirtylion
mit break habe ich es versucht aber damit bekomme ich es leider nicht richtig hin :(

Re: for loop frage

Verfasst: Freitag 15. April 2011, 18:20
von dirtylion
kann mir bitte jemand ein example geben, ich stehe auf dem schlauch :(

Re: for loop frage

Verfasst: Freitag 15. April 2011, 18:47
von b.esser-wisser
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