Подтвердить что ты не робот

Измените строку целых чисел, разделенных пробелами, на список int

Как сделать что-то вроде

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

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

Я полностью застреваю, если я делаю это по индексу, то цифры с более чем 1 разрядом будут разбиты. Помогите пожалуйста.

4b9b3361

Ответ 1

Вы можете использовать понимание списка в сочетании с методом .split():

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

В качестве альтернативы вы можете использовать map, а также:

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

Это создаст list of int, если вам нужны целые числа.

или просто используйте .split() для списка строк:

x = x.split()

Если вы хотите создать список str

Ответ 2

Не нужно беспокоиться, потому что python предоставляет функцию split() для изменения строки в списке.

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

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

или если вы хотите выводить в целочисленной форме, вы можете использовать функцию карты

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

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

Ответ 3

s=' 1 2 3 4 67 8 9 '
если в начале или конце строки есть пробел или несколько пробелов между элементами, как указано выше, функция:
out = [item for item in s.split(' ')]
вернет пустые предметы:
['', '1', '2', '', '3', '4', '67', '8', '9', '']
Вы можете отфильтровать его:
out = [item for item in filter(None, s.split(' '))]
Выход будет следующим:
['1', '2', '3', '4', '67', '8', '9']
фильтр с None как первый arg удаляет пустые элементы.

Ответ 4

Простая строка может быть...

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

Как кто-то разумно исправил меня, в python >= 3, он должен стать

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

Он также может быть пользователем в более ранних версиях.

Ответ 5

Просто для пояснения.

Вы можете использовать метод string str.split(), который разбивает строку на список. Вы можете узнать больше об этом методе здесь.

Пример:

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

Это должно сделать это!

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

Ответ 6

Предполагая, что у вас есть только цифры на вашем входе, вы можете иметь что-то вроде следующего:

>>> 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]

Это позаботится о том, когда цифры разделяются более чем одним пробелом или когда на передней или задней панели находятся пробельные символы. Что-то вроде следующего:

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

Вы можете заменить ввод на x.split(' '), чтобы соответствовать другим типам разделителей, например, например. , или ; и т.д.