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个空格并不重要.
我想最脏的解决方案是:
list(eval('0, 0, 0, 11, 0, 0, 0, 11'))
Run Code Online (Sandbox Code Playgroud)
您还可以对拆分的字符串使用列表理解
[ int(x) for x in example_string.split(',') ]
Run Code Online (Sandbox Code Playgroud)
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)
它应该工作
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 次 |
| 最近记录: |