String Liste in Ineger Liste umwandeln

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
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Hallochen.

Ich habe eine String Liste. Sie enthält mit Komma voneinander getrennte Zahlen. Diese lese ich wie folgt ein.

Code: Alles auswählen

def read_list():
    with open("text.txt","r") as f:
        liste = map(int,f.read().split(","))
   
    print(liste[2])
Nun wollte ich aus dem Dateistream eine Integerliste erzeugen. Ich wollte es vermeiden durch eine Schleife jeden einzelnen Wert umzuwandeln. Gibts es da noch andere Möglichkeiten?

Es kommt die folgende Fehlermeldung;

Code: Alles auswählen

  File "check_quicksort.py", line 5, in read_list
    print(liste[2])
TypeError: 'map' object is not subscriptable
VG niesel
BlackJack

@nieselfriem: Wenn Du eine Liste haben möchtest, dann würde ich das in Python 3 als „list comprehension” schreiben. `map()` liefert ein iterierbares Objekt und keine Liste.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

nieselfriem hat geschrieben:

Code: Alles auswählen

TypeError: 'map' object is not subscriptable
In Python 2 hat map noch eine Liste erzeugt, in Python 3 nicht mehr.

Code: Alles auswählen

>>> map(int, '12')
<map object at 0x044EFEF0>
>>> list(map(int, '12'))
[1, 2]
>>> [int(value) for value in '12']
[1, 2]
Antworten