将由空格分隔的整数字符串更改为int列表

时间:2013-10-24 01:48:55

标签: python string list int

我如何制作类似

的内容
x = '1 2 3 45 87 65 6 8'

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

我完全陷入困境,如果按索引进行,那么超过1位的数字将会被分解。请帮助。

7 个答案:

答案 0 :(得分:39)

您可以将列表理解与.split()方法结合使用:

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

或者您也可以使用map

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

如果你想要整数,这将创建一个list int

或仅使用.split()获取字符串列表:

x = x.split()

如果您要创建str

列表

答案 1 :(得分:4)

无需担心,因为python提供了split()函数来将字符串更改为列表。

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

[' 1',' 2',' 3',' 4',' 67',& #39; 8']

或者如果你想以整数形式输出,那么你可以使用map函数

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

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

答案 2 :(得分:2)

如上所述,在字符串的开头或结尾处输入空格或用多个不均匀的空格分隔,s.split('')也会返回空项目:

>>> s=' 1 2  3 4 67 8 9 ' 
>>> list(s.split(' '))
['', '1', '2', '', '3', '4', '67', '8', '9', '']

我最好避免指定分隔符:

>>> list(s.split())
['1', '2', '3', '4', '67', '8', '9']
  

如果可选的第二个参数sep不存在或为None,则单词由空格字符的任意字符串(空格,制表符,换行符,返回,换页)分隔。

如果您只想在空格处拆分,可以轻松过滤空字符串:

>>> [item for item in s.split(' ') if item]
['1', '2', '3', '4', '67', '8', '9']

答案 3 :(得分:1)

一条简单的线可以......

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

有些人明智地纠正了我,在python> = 3中,它将成为,

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

它也可以是早期版本的用户。

答案 4 :(得分:0)

只是做一个明确的解释。

您可以使用将字符串拆分为列表的字符串方法str.split()。您可以详细了解此方法here

示例:

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]

答案 5 :(得分:0)

假设您的输入中只有数字,您可以使用以下内容:

>>> 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(' ')以匹配其他分隔符类型,例如,;等。

答案 6 :(得分:0)

如果你想从第零个位置创建一个列表:

x = '1 2 3 4 5 6 7'
result = x.split(" ")[0:]
print(result)

结果将是:

['1', '2', '3', '4', '5', '6', '7']