Konvertieren Sie alle Zeichenfolgen in einer Liste in ganze Zahlen [duplicate]

Lesezeit: 5 Minuten

Michaels Benutzeravatar
Michael

Wie konvertiere ich alle Strings in einer Liste in Ganzzahlen?

['1', '2', '3']  ⟶  [1, 2, 3]

Benutzeravatar von cheeken
frech

Gegeben:

xs = ['1', '2', '3']

Verwenden map Dann list um eine Liste von ganzen Zahlen zu erhalten:

list(map(int, xs))

In Python2, list war seitdem unnötig map eine Liste zurückgegeben:

map(int, xs)

  • Ich möchte darauf hinweisen, dass pylint von der Verwendung von abrät map, bereiten Sie sich also darauf vor, Listenverständnisse trotzdem zu verwenden, wenn Sie jemals diesen Standard verwenden. 🙂

    – ThorSummoner

    12. Februar 2015 um 6:41 Uhr

  • Die Umkehrung ist (um eine Liste von int in eine Liste von Zeichenfolgen umzuwandeln): map( str, results)

    – Ali IVSS

    11. März 2017 um 22:08 Uhr

  • Sie können diese Antwort vereinfachen: einfach immer verwenden list(map(int, results))es funktioniert für jede Python-Version.

    – mvp

    24. Januar 2018 um 18:50 Uhr

  • Ich möchte nur hinzufügen, dass der Typ der Kartenfunktion iterierbar ist, sodass Sie ihn technisch gesehen nicht in eine Liste konvertieren müssten, wenn Sie ihn durchlaufen würden.

    – ThatOneAmazingPanda

    31. Dezember 2020 um 16:38 Uhr

Benutzeravatar von Chris Vig
Chris Vig

Benutze einen Listenverständnis auf der Liste xs:

[int(x) for x in xs]

z.B

>>> xs = ["1", "2", "3"]
>>> [int(x) for x in xs]
[1, 2, 3]

  • Das Listenverständnis ist auch großartig. Zum OP – siehe hier, um einen schönen Kontrast zwischen Karten- und Listenverständnis zu sehen: stackoverflow.com/questions/1247486/…

    – frech

    10. September 2011 um 2:08 Uhr

Es gibt mehrere Methoden, um Zeichenfolgennummern in einer Liste in Ganzzahlen umzuwandeln.

In Python 2.x können Sie die verwenden Karte Funktion:

>>> results = ['1', '2', '3']
>>> results = map(int, results)
>>> results
[1, 2, 3]

Hier gibt es die Liste der Elemente zurück, nachdem die Funktion angewendet wurde.

In Python 3.x können Sie dasselbe verwenden Karte

>>> results = ['1', '2', '3']
>>> results = list(map(int, results))
>>> results
[1, 2, 3]

Im Gegensatz zu Python 2.x gibt die Kartenfunktion von Here das Kartenobjekt zurück, dh iterator was die Ergebnisse (Werte) nacheinander liefert. Aus diesem Grund müssen wir eine Funktion mit dem Namen as hinzufügen list die auf alle iterierbaren Elemente angewendet wird.

Sehen Sie sich das Bild unten für den Rückgabewert von an map Funktion und ihr Typ im Fall von Python 3.x

Map-Funktion-Iterator-Objekt und seinen Typ

Die dritte Methode, die sowohl für Python 2.x als auch für Python 3.x gilt, dh Listenverständnisse

>>> results = ['1', '2', '3']
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]

Benutzeravatar von danialcodes
Danielcodes

Sie können String-Listenelemente einfach in Int-Elemente konvertieren, indem Sie die Schleifen-Kurzschrift in Python verwenden

Angenommen, Sie haben eine Zeichenfolge result = ['1','2','3']

Mach einfach,

result = [int(item) for item in result]
print(result)

Es gibt Ihnen Ausgabe wie

[1,2,3]

Benutzeravatar von Patrick Artner
Patrick Artner

Wenn Ihre Liste reine Integer-Strings enthält, ist die akzeptierte Antwort der richtige Weg. Es wird abstürzen, wenn Sie ihm Dinge geben, die keine ganzen Zahlen sind.

Also: Wenn Sie Daten haben, die möglicherweise Ints, möglicherweise Floats oder andere Dinge enthalten, können Sie Ihre eigene Funktion mit Fehlerbehandlung nutzen:

def maybeMakeNumber(s):
    """Returns a string 's' into a integer if possible, a float if needed or
    returns it as is."""

    # handle None, "", 0
    if not s:
        return s
    try:
        f = float(s)
        i = int(f)
        return i if f == i else f
    except ValueError:
        return s

data = ["unkind", "data", "42", 98, "47.11", "of mixed", "types"]

converted = list(map(maybeMakeNumber, data))
print(converted)

Ausgang:

['unkind', 'data', 42, 98, 47.11, 'of mixed', 'types']

Um auch Iterables innerhalb von Iterables zu handhaben, können Sie diesen Helfer verwenden:

from collections.abc import Iterable, Mapping

def convertEr(iterab):
    """Tries to convert an iterable to list of floats, ints or the original thing
    from the iterable. Converts any iterable (tuple,set, ...) to itself in output.
    Does not work for Mappings  - you would need to check abc.Mapping and handle 
    things like {1:42, "1":84} when converting them - so they come out as is."""

    if isinstance(iterab, str):
        return maybeMakeNumber(iterab)

    if isinstance(iterab, Mapping):
        return iterab

    if isinstance(iterab, Iterable):
        return  iterab.__class__(convertEr(p) for p in iterab)


data = ["unkind", {1: 3,"1":42}, "data", "42", 98, "47.11", "of mixed", 
        ("0", "8", {"15", "things"}, "3.141"), "types"]

converted = convertEr(data)
print(converted)

Ausgang:

['unkind', {1: 3, '1': 42}, 'data', 42, 98, 47.11, 'of mixed', 
 (0, 8, {'things', 15}, 3.141), 'types'] # sets are unordered, hence diffrent order

Benutzeravatar der Community
Gemeinschaft

Etwas erweiterter als das Listenverständnis, aber ebenfalls nützlich:

def str_list_to_int_list(str_list):
    n = 0
    while n < len(str_list):
        str_list[n] = int(str_list[n])
        n += 1
    return(str_list)

z.B

>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]

Auch:

def str_list_to_int_list(str_list):
    int_list = [int(n) for n in str_list]
    return int_list

Benutzeravatar von Code Carbonate
Code Karbonat

Hier ist eine einfache Lösung mit Erklärung für Ihre Frage.

 a=['1','2','3','4','5'] #The integer represented as a string in this list
 b=[] #Fresh list
 for i in a: #Declaring variable (i) as an item in the list (a).
     b.append(int(i)) #Look below for explanation
 print(b)

Hier, anhängen () wird verwendet, um Elemente (dh die ganzzahlige Version der Zeichenfolge (i) in diesem Programm) am Ende der Liste (b) hinzuzufügen.

Notiz: int() ist eine Funktion, die hilft, eine ganze Zahl in Form einer Zeichenfolge zurück in ihre ganzzahlige Form zu konvertieren.

Ausgabekonsole:

[1, 2, 3, 4, 5]

Daher können wir die Zeichenfolgenelemente in der Liste nur dann in eine Ganzzahl konvertieren, wenn die angegebene Zeichenfolge vollständig aus Zahlen besteht, da sonst ein Fehler generiert wird.

1449130cookie-checkKonvertieren Sie alle Zeichenfolgen in einer Liste in ganze Zahlen [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy