Zahlen in Tuple?

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
Strook
User
Beiträge: 5
Registriert: Dienstag 17. März 2009, 17:15

Donnerstag 19. März 2009, 12:55

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
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Donnerstag 19. März 2009, 12:57

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.)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Strook
User
Beiträge: 5
Registriert: Dienstag 17. März 2009, 17:15

Donnerstag 19. März 2009, 13:09

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 19. März 2009, 13:30

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Strook
User
Beiträge: 5
Registriert: Dienstag 17. März 2009, 17:15

Donnerstag 19. März 2009, 13:57

Jetzt bekomme ich folgende Fehlermeldung:
TypeError: 'long' object is not iterable
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 19. März 2009, 14:03

Sorry, habe den Code den ich gepostet habe nicht ausprobiert.

Code: Alles auswählen

retval = (t2[1][0],) in t1
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Strook
User
Beiträge: 5
Registriert: Dienstag 17. März 2009, 17:15

Freitag 20. März 2009, 08:51

Dankeschoen! So hats funktioniert.
BlackJack

Samstag 21. März 2009, 03:20

Wobei das IMHO etwas komisch aussieht. Sind in `t1` grundsätzlich nur Tupel mit *einem* Element enthalten?
Antworten