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

Zahlen in Tuple?

Beitragvon Strook » 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

Beitragvon birkenfeld » 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

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

Beitragvon Leonidas » 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

Beitragvon Strook » Donnerstag 19. März 2009, 13:57

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

Beitragvon Leonidas » 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

Beitragvon Strook » Freitag 20. März 2009, 08:51

Dankeschoen! So hats funktioniert.
BlackJack

Beitragvon 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?

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], redone