Python 如何将一串空格分隔的数字拆分为整数?

Python 如何将一串空格分隔的数字拆分为整数?,python,arrays,string,split,integer,Python,Arrays,String,Split,Integer,我有一个字符串“42 0”(例如),需要获取两个整数的数组。我可以在空间上执行.split吗 text = "42 0" nums = [int(n) for n in text.split()] 如果确定始终存在两个整数,也可以执行以下操作: a,b = (int(x) for x in s.split()) 或者如果您计划在 l = [int(x) for x in s.split()] 当然,您可以调用split,但它将返回字符串,而不是整数。做 >>> x, y

我有一个字符串
“42 0”
(例如),需要获取两个整数的数组。我可以在空间上执行
.split

text = "42 0"
nums = [int(n) for n in text.split()]
如果确定始终存在两个整数,也可以执行以下操作:

a,b = (int(x) for x in s.split())
或者如果您计划在

l = [int(x) for x in s.split()]

当然,您可以调用
split
,但它将返回字符串,而不是整数。做

>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]

这应该起作用:

[ int(x) for x in "40 1".split(" ") ]

其他答案已经表明,您可以使用它将值转换为一个值。如果您想了解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()))
编辑:更简洁的解决方案:

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()))
使用:

请注意,
str.split(“”)
在本例中是相同的,但如果一行中有多个空格,则其行为会有所不同。同样,
.split()
对所有空格进行分割,而不仅仅是空格

当您想将iterables项转换为内置项(如
int
float
str
)时,使用
map
通常比使用列表理解看起来更简洁。在Python 2中:

>>> map(int, "42 0".split())
[42, 0]
在Python3中,
map
将返回一个惰性对象。您可以使用
list()
将其放入列表中:

映射(int,“42 0”.split()) >>>列表(映射(int,“42 0”.split()) [42, 0] 给定:
text=“42 0”


我建议检查子字符串是否为数字:

In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
只需使用
strip()
删除空格并对变量应用显式int转换

例:

使用numpy的:


int(n)可能会引发ValueError,如果它不起作用的话,我想这对这个特定的例子会有帮助,但是如果能看到一个关于在空格上拆分的能力的答案,那就太好了。
.strip()
只会拆分尾随空格。您仍将遍历空格和逗号,这将抛出一个错误。另外,如果有一个
10,21
呢?您的代码将逐位迭代它
>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]
import re
numlist = re.findall('\d+',text)

print(numlist)

['42', '0']
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
a='1  ,  2, 4 ,6 '
f=[int(i.strip()) for i in a]
import numpy as np

np.fromstring("42 0", dtype=int, sep=' ')
>>> array([42,  0])