Moinsen,
ich würde gerne eine Funktion schreiben, mit der eine beliebige eindimensionale Liste gefüttert wird und die als Rückgabewert angibt, ob sich alle Einträge der Liste in eint integer umwandeln lassen würden.
Bsp:
Liste1 = ['0001', '04711', '0451'] -> Diese Listeneinträge könnten alle in Integer umgewandelt werden.
Liste2 = ['0001', '04711', '1AAFFEE'] -> geht nicht.
Aber wie macht man dies am schnellsten und effizientesten?
Danke & Gruß,
Pascal
Listeneinträge durchsuchen und Datentyp für alle Einträge
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Code: Alles auswählen
def check_list(list):
for i in list:
try:
int(i)
except:
return False
return True
Liste1 = ['0001', '04711', '0451']
Liste2 = ['0001', '04711', '1AAFFEE']
print check_list(Liste1)
print check_list(Liste2)
Diese Loesung liefert die Anzahl der Werte, die nicht in einen Integerwert gewandelt werden koennen (0 => True, alles andere False):
Gruss, Helmut
Code: Alles auswählen
def test(a):
if a==int(a): return 0
return 1
def check_list(liste):
return sum(map(test,liste))
li=[1,2,3,4,5.5,6.6]
print check_list(li)
Hallo!
Du koenntest auch mit hasattr(value,'__int__') schauen, ob das entsprechende Datum eine Routine besitzt, die eine Konvertierung in einen int zulassen.
Gruss Tom
Du koenntest auch mit hasattr(value,'__int__') schauen, ob das entsprechende Datum eine Routine besitzt, die eine Konvertierung in einen int zulassen.
Gruss Tom
Ich persönlich fände folgende Lösung besser:jens hat geschrieben:Code: Alles auswählen
def check_list(list): for i in list: try: int(i) except: return False return True
Code: Alles auswählen
def list_to_int(list):
try:
return map(int,list)
except ValueError:
return None
Die Pythonphilosophie ist es, anstatt versuchen zu erraten, ob es geht, es einfach direkt zu versuchen und auf entsprechende Fehler zu reagieren. (anstatt versuchen sie zu vermeiden)
"Pythonphilosophisch" ist die Rückgabe von `None` als spezieller Fehlerwert aber auch nicht so gerne gesehen. Dafür sind ja Ausnahmen da. Das heisst es würde auf ein einfaches ``map(int, whatever)`` hinauslaufen.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wobei ich mein True/False garnicht so schlecht finde... Dann kann man einfach mit if nachschauen... Ob es Sinn macht wirklich die konvertierte Zahlenliste zurück zu liefern, weiß ich nicht, kommt auf den Anwendungsfall an...