Bereiche vergleichen

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
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

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
http://www.snowflake-sl.info/index.html
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Code: Alles auswählen

 any(x in b for x in a)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Code: Alles auswählen

>>> set("abc") & set("cg")
set(['c'])
TUFKAB – the user formerly known as blackbird
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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 ;)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Stimmt! Ist mir auch aufgefallen als ich audax's Vorschlag gesehen habe. ;)
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Vielen Dank, any() kannte ich noch nicht :?
http://www.snowflake-sl.info/index.html
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.
Antworten