Python - 将一串数字转换为int列表

Bar*_*t M 25 python string integer list

我有一串数字,如:

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
Run Code Online (Sandbox Code Playgroud)

我想将其转换为列表:

example_list = [0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西:

for i in example_string:
    example_list.append(int(example_string[i]))
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用,因为字符串包含空格和逗号.但是,删除它们不是一种选择,因为像"19"这样的数字会被转换为1和9.你能帮我解决这个问题吗?

Mar*_*ers 56

在逗号上拆分,然后映射到整数:

map(int, example_string.split(','))
Run Code Online (Sandbox Code Playgroud)

或者使用列表理解:

[int(s) for s in example_string.split(',')]
Run Code Online (Sandbox Code Playgroud)

如果你想要一个列表结果,后者在Python 3上效果更好.

这是因为int()容忍空格:

>>> example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
>>> map(int, example_string.split(','))  # Python 2, in Python 3 returns iterator object
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]
>>> [int(s) for s in example_string.split(',')]
[0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11]
Run Code Online (Sandbox Code Playgroud)

仅对逗号进行拆分也更容忍变量输入; 如果在值之间使用0,1或10个空格并不重要.

  • 对于python3,您必须将`map(int,example_string.split(','))`更改为`list(map(int,example_string.split(',')))`。 (2认同)

hen*_*rik 7

我想最脏的解决方案是:

list(eval('0, 0, 0, 11, 0, 0, 0, 11'))
Run Code Online (Sandbox Code Playgroud)

  • 它可能更脏,但它足够脏,足以让你投反对票。为什么要发布这样一个可怕的解决方案? (3认同)

lej*_*lot 6

您还可以对拆分的字符串使用列表理解

[ int(x) for x in example_string.split(',') ]
Run Code Online (Sandbox Code Playgroud)


Roh*_*ngh 6

number_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'

number_string = number_string.split(',')

number_string = [int(i) for i in number_string]
Run Code Online (Sandbox Code Playgroud)


luc*_*mia 5

它应该工作

example_string = '0, 0, 0, 11, 0, 0, 0, 0, 0, 19, 0, 9, 0, 0, 0, 0, 0, 0, 11'
example_list = [int(k) for k in example_string.split(',')]
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

99019 次

最近记录:

7 年,2 月 前