wake-up-neo.net

Ändern Sie eine durch Leerzeichen getrennte Folge von Ganzzahlen in eine Liste von Int

Wie mache ich so etwas?

x = '1 2 3 45 87 65 6 8'

>>> foo(x)
[1,2,3,45,87,65,6,8]

Ich bin völlig festgefahren, wenn ich es nach Index mache, dann werden die Zahlen mit mehr als einer Ziffer gebrochen. Hilfe bitte.

29
Spock

Sie können ein Listenverständnis in Kombination mit der Methode .split () verwenden:

x = [int(i) for i in x.split()]

Alternativ können Sie auch map verwenden:

x = list(map(int, x.split()))

Dies erzeugt eine list von int, wenn Sie Ganzzahlen wünschen.

oder benutze einfach .split() für eine Liste von Strings:

x = x.split()

Wenn Sie eine Liste von str erstellen möchten

39
tijko

Bei Eingabe mit Leerzeichen am Anfang oder Ende der Zeichenfolge oder mit Begrenzung durch mehrere ungerade Leerzeichen zwischen den oben genannten Elementen gibt s.split ('') auch leere Elemente zurück:

>>> s=' 1 2  3 4 67 8 9 ' 
>>> list(s.split(' '))
['', '1', '2', '', '3', '4', '67', '8', '9', '']

Ich vermeide es besser, ein Trennzeichen anzugeben:

>>> list(s.split())
['1', '2', '3', '4', '67', '8', '9']

Wenn das optionale zweite Argument sep fehlt oder None ist, werden die Wörter durch willkürliche Zeichenfolgen aus Leerzeichen (Leerzeichen, Tabulator, Zeilenvorschub, Return, Formularvorschub) getrennt.

Wenn Sie nur an Leerzeichen teilen möchten, können leere Zeichenfolgen einfach gefiltert werden:

>>> [item for item in s.split(' ') if item]
['1', '2', '3', '4', '67', '8', '9']
3

Keine Sorge, denn Python bietet die Funktion split () zum Ändern von Zeichenfolgen in eine Liste.

x='1 2 3 4 67 8 9'
x.split()

['1', '2', '3', '4', '67', '8']

oder wenn Sie die Ausgabe in Ganzzahl-Form wünschen, können Sie die Kartenfunktion verwenden

map(int ,x.split(' '))

[1, 2, 3, 4, 67, 8]

3
Shivendra Singh

Eine einfache Zeile kann sein ...

print (map(int, x.split()))  

Da mich jemand klügerisch korrigierte, sollte er in

print(list(map(int,x.split())))  

Es kann auch in früheren Versionen verwendet werden.

1

Nur um eine klare Erklärung zu geben.

Sie können die String-Methode str.split() verwenden, die den String in eine Liste aufteilt. Mehr über diese Methode erfahren Sie hier .

Beispiel:

def foo(x):
    x = x.split() #x is now ['1','2','3','45', ..] the spaces are removed.
    for i, v  in enumerate(x): #Loop through the list
        x[i] = int(v) #convert each element of v to an integer

Das sollte es tun!

>>> x
[1, 2, 3, 45, 87, 65, 6, 8]
0
aIKid

Angenommen, Sie haben nur Ziffern in Ihrer Eingabe, können Sie etwa Folgendes haben:

>>> x = '1 2 3 45 87 65 6 8'
>>> num_x = map(int, filter(None, x.split(' ')))
>>> num_x
[1 2 3 45 87 65 6 8]

Dies sorgt für den Fall, wenn die Ziffern durch mehr als ein Leerzeichen getrennt sind oder wenn Leerzeichen vor oder hinter der Eingabe stehen. Etwas wie folgt:

>>> x = ' 1 2 3  4 '
>>> num_x = map(int, filter(None, x.split(' ')))
>>> num_x
[1, 2, 3, 4]

Sie können die Eingabe in x.split(' ') ersetzen, um auch auf andere Begrenzertypen zu passen, z. , oder ; usw.

0
6pack kid