Seite 1 von 1

Zahlen in Tuple?

Verfasst: Donnerstag 19. März 2009, 12:55
von Strook
Hallo,

habe da ein kleines Problem und zwar versuche ich herauszufinden, ob eine bestimmte Zahl in folgendem Tuple zu finden ist.

Momentan versuche ich das so:

Code: Alles auswählen

zahl = 2
retval = zahl2 in tuple
print retval
Mein Tuple sieht dabei so aus:
((4L,), (5L,))

Was hat es mit den L's auf sich? Long? Wie bekomme ich das L weg bzw. die Zahlen zu Integern?

Gruesse

Verfasst: Donnerstag 19. März 2009, 12:57
von birkenfeld
Ob die Zahlen ints oder longs sind, spielt für den "2 in"-Vergleich keine Rolle.

Was eine Rolle spielt, ist, dass es sich um verschachtelte Tupel handelt: du müsstest "(2,) in tuple" abfragen.

(Ach ja, obligatorischer Hinweis: nenne ein Tupel nicht "tuple", denn das ist ein Builtin.)

Verfasst: Donnerstag 19. März 2009, 13:09
von Strook
Hm, ok, wohl doch nicht so leicht zu loesen wie ich dachte ;)

Eigentlich will ich einen Wert aus einem Tupel mit einem Wert aus einem anderen Tupel vergleichen. Die Tupel sehen so aus (wenn ich sie per print ausgebe):

t1: ((4L,), (5L,))
t2: ((2L, '10.8.3.174'), (4L, '10.8.3.168'), (5L, '10.8.3.169'), (6L, '10.8.3.157'))

Der Code so:

Code: Alles auswählen

retval = t2[1][0] in t1
= False

Das funzt aber eben nicht ;)

Zum obligatorischen Hinweis :P Ich habe den ganzen Tag mit Englisch zu tun, meines Wissens heisst ein Tupel in python-englisch tuple? Oder? Falls meine Aussage nicht stimmt, vergiss sie :D

Verfasst: Donnerstag 19. März 2009, 13:30
von Leonidas
Strook hat geschrieben:Der Code so:

Code: Alles auswählen

retval = t2[1][0] in t1
= False

Das funzt aber eben nicht ;)
Das hat birkenfeld schon angesprochen. Mach mal ein

Code: Alles auswählen

retval = tuple(t2[1][0]) in t1
Strook hat geschrieben:Zum obligatorischen Hinweis :P Ich habe den ganzen Tag mit Englisch zu tun, meines Wissens heisst ein Tupel in python-englisch tuple? Oder? Falls meine Aussage nicht stimmt, vergiss sie :D
Ja, das stimmt auch, aber in Python gibt es bereits eine Funktion (eigentlich ein Built-in) ``tuple``, das ich auch oben nutze. Fallst du nun eines deiner Tupel ``tuple`` nennst, kannst du die Funktion nicht mehr nutzen.

Verfasst: Donnerstag 19. März 2009, 13:57
von Strook
Jetzt bekomme ich folgende Fehlermeldung:
TypeError: 'long' object is not iterable

Verfasst: Donnerstag 19. März 2009, 14:03
von Leonidas
Sorry, habe den Code den ich gepostet habe nicht ausprobiert.

Code: Alles auswählen

retval = (t2[1][0],) in t1

Verfasst: Freitag 20. März 2009, 08:51
von Strook
Dankeschoen! So hats funktioniert.

Verfasst: Samstag 21. März 2009, 03:20
von BlackJack
Wobei das IMHO etwas komisch aussieht. Sind in `t1` grundsätzlich nur Tupel mit *einem* Element enthalten?