Seite 1 von 1

Bereiche vergleichen

Verfasst: Montag 14. Juli 2008, 10:29
von ete
Hallo!

Gibt es eine Funktion um Bereiche zu vergleichen?

a = range(0, 10)
b = range(5, 15)

Ich möchte wissen ob eine der Zahlen vom Bereich a auch in Bereich b vorhanden ist. Über set bzw. s.issubset(t) muss ja der ganze Bereich übereinstimmen, mich interessiert aber ob mindestens eine Zahl die gleiche ist.

Liebe Grüsse
Stefanie

Re: Bereiche vergleichen

Verfasst: Montag 14. Juli 2008, 10:34
von audax

Code: Alles auswählen

 any(x in b for x in a)

Verfasst: Montag 14. Juli 2008, 10:36
von mitsuhiko

Code: Alles auswählen

>>> set("abc") & set("cg")
set(['c'])

Verfasst: Montag 14. Juli 2008, 10:36
von Zap
Ab 2.5 gibts die any() Funktion die da helfen könnte.

Code: Alles auswählen

In [18]: a = range(0, 10)

In [19]: b = range(5, 15)

In [20]: any([e in a for e in b])
Out[20]: True
Edit: Man darf beim antworten nicht mal nen Schluck Kaffee trinken, dann ist man schon zu spät ;)

Verfasst: Montag 14. Juli 2008, 10:39
von mitsuhiko
Zap hat geschrieben:Ab 2.5 gibts die any() Funktion die da helfen könnte.
Die man aber bitte mit eine Generator Expression und nicht einer list Comprehension füttert.

Verfasst: Montag 14. Juli 2008, 10:56
von Zap
Stimmt! Ist mir auch aufgefallen als ich audax's Vorschlag gesehen habe. ;)

Verfasst: Montag 14. Juli 2008, 10:57
von ete
Vielen Dank, any() kannte ich noch nicht :?

Verfasst: Montag 14. Juli 2008, 14:54
von BlackJack
Und aus `a` sollte man vorher noch ein `set()` machen, damit das ``e in a`` keine lineare Operation wird. Und ich hoffe es geht um Listen mit Lücken drin und nicht wirklich um welche mit direkt aufeinander folgenden Zahlen wie sie von `range()` erzeugt werden.