Comment puis-je faire quelque chose comme
x = '1 2 3 45 87 65 6 8'
>>> foo(x)
[1,2,3,45,87,65,6,8]
Je suis complètement bloqué, si je le fais par index, les nombres avec plus d'un chiffre seront décomposés. Aidez-moi, s'il vous plaît.
Vous pouvez utiliser une compréhension de liste en combinaison avec la méthode .split () :
x = [int(i) for i in x.split()]
Sinon, vous pouvez utiliser map
aswell:
x = list(map(int, x.split()))
Cela créera une list
de int
si vous voulez des entiers.
ou utilisez simplement .split()
pour obtenir une liste de chaînes:
x = x.split()
Si vous voulez créer une liste de str
Ne vous inquiétez pas, car python fournit la fonction split () pour changer de chaîne en liste.
x='1 2 3 4 67 8 9'
x.split()
['1', '2', '3', '4', '67', '8']
ou si vous voulez une sortie sous forme entière, vous pouvez utiliser la fonction map
map(int ,x.split(' '))
[1, 2, 3, 4, 67, 8]
Une simple ligne peut être ...
print (map(int, x.split()))
Comme quelqu'un m'a sagement corrigé, en python> = 3, il deviendra
print(list(map(int,x.split())))
Il peut également être utilisateur dans les versions antérieures.
Juste pour faire une explication claire.
Vous pouvez utiliser la méthode de chaîne str.split()
qui divise la chaîne en une liste. Vous pouvez en apprendre plus sur cette méthode ici .
Exemple:
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
Ça devrait le faire!
>>> x
[1, 2, 3, 45, 87, 65, 6, 8]
En supposant que vous n'ayez que des chiffres dans votre entrée, vous pouvez avoir quelque chose comme suit:
>>> 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]
Cela prend en charge le cas où les chiffres sont séparés par plus d'un caractère d'espacement ou lorsqu'il y a des caractères d'espacement devant ou derrière l'entrée. Quelque chose comme suit:
>>> x = ' 1 2 3 4 '
>>> num_x = map(int, filter(None, x.split(' ')))
>>> num_x
[1, 2, 3, 4]
Vous pouvez remplacer l’entrée dans x.split(' ')
pour qu’elle corresponde à d’autres types de délimiteurs, par ex. ,
ou ;
etc.