如何将空格分隔的数字字符串拆分为整数?
我有一个字符串 "42 0"
(比如说),我想把里面的两个数字提取成一个数组。我可以用空格来做 .split
吗?
解决这个问题的明显方法是将一些简单的任务结合起来:
不过,根据具体的需求,这个问题也可以用其他方法来解决。在某些情况下,单独使用分割步骤就足够了。这里的一些答案提供了其他方法,可以生成不同的输出,比如使用标准库中的 array.array
,或者使用 Numpy 数组。
另外,这个问题也可以看作是 如何从字符串中提取数字? 的一个特例。
9 个回答
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()]
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。
我们通常会用一些工具来帮助我们完成这个任务。比如,有些编程语言提供了库或者框架,这些都是为了让我们更方便地处理数据。
在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者数据没有按照我们想要的方式出现。这就需要我们仔细检查每一步,确保数据能够顺利地从一个地方转移到另一个地方。
总之,处理数据就像是在做一个搬家工作,我们需要有条不紊地把每一件东西搬到新家,确保没有遗漏和损坏。
text = "42 0"
nums = [int(n) for n in text.split()]
使用 str.split()
方法:
>>> "42 0".split() # or .split(" ")
['42', '0']
需要注意的是,str.split(" ")
在这种情况下是一样的,但如果有连续多个空格,它的表现就会不同。而且,.split()
会把所有的空白字符都作为分隔符,而不仅仅是空格。
当你想把可迭代对象里的项目转换成像 int
、float
、str
这样的内置类型时,使用 map
通常看起来比使用列表推导式更简洁。在 Python 2 中:
>>> map(int, "42 0".split())
[42, 0]
在 Python 3 中,map
会返回一个懒加载对象。你可以用 list()
把它转换成列表:
>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]