У меня есть строка "42 0"
(например) и нужно получить массив из двух целых чисел. Могу ли я сделать .split
в пробе?
Как разбить строку разделенных пробелом чисел на целые числа?
Ответ 1
6 ответов недостаточно для вопроса, на который ОП мог бы легко ответить сам, проверив в переводчике:
>>> "42 0".split() # or .split(" ")
['42', '0']
A: Да.
Но специально не указывалось, что метод split
по умолчанию разделяется на пробелы (пробел, табуляция, возврат каретки и перевод строки), если вы не предоставили ему аргумент.
>>> " \r 42\n\r \t\n \r0\n\r\n".split()
['42', '0']
Кроме того, использование map
обычно выглядит чище, чем использование списочных представлений, когда вы хотите преобразовать элементы итерируемых элементов во встроенные модули, такие как int
, float
, str
и т.д. В Python 2:
>>> map(int, "42 0".split())
[42, 0]
В Python 3, map
будет возвращать объект ленивый, вы можете получить его в список с list()
, или использовать как в for
цикла, например:
>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]
Ответ 2
text = "42 0"
nums = [int(n) for n in text.split()]
Ответ 3
l = (int(x) for x in s.split())
Если вы уверены, что всегда есть два целых числа:
a,b = (int(x) for x in s.split())
или если вы планируете изменить массив после
l = [int(x) for x in s.split()]
Ответ 4
Это должно работать:
[ int(x) for x in "40 1".split(" ") ]
Ответ 5
Конечно, вы можете вызвать split
, но он вернет строки, а не целые числа. У
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
или
[int(x) for x in "42 0".split()]
Ответ 6
Другие ответы уже показывают, что вы можете использовать split(), чтобы получить значения в list. Если вы спрашивали о Python массивы, вот одно из решений:
import array
s = '42 0'
a = array.array('i')
for n in s.split():
a.append(int(n))
Изменить: более сжатое решение:
import array
s = '42 0'
a = array.array('i', (int(t) for t in s.split()))
Ответ 7
Вот мой ответ для Python 3.
some_string = "2 3 8 61 "
list(map(int, some_string.strip().split()))
Ответ 8
Я предлагаю проверить, является ли подстрока цифрой:
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
Ответ 9
Дано: text = "42 0"
import re
numlist = re.findall('\d+',text)
print(numlist)
['42', '0']
Ответ 10
Просто используйте strip()
чтобы удалить пустые места и применить явное преобразование int к переменной.
Пример:
a='1 , 2, 4 ,6 '
f=[int(i.strip()) for i in a]