我如何制作类似
的内容x = '1 2 3 45 87 65 6 8'
>>> foo(x)
[1,2,3,45,87,65,6,8]
我完全陷入困境,如果按索引进行,那么超过1位的数字将会被分解。请帮助。
答案 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']