将每个数字字符串转换为int

时间:2014-02-13 14:44:11

标签: python string list-comprehension

所以我有一个字符串说“1234567”,我想要的端点是[1,2,3,4,5,6,7]形式的列表

我目前正在做的是这个

[int(x) for x in "1234567"]

我想知道的是,如果有更好或更多的Pythonic方法吗?可能使用内置函数或标准库函数。

3 个答案:

答案 0 :(得分:4)

您可以使用map功能:

map(int, "1234567")

range

range(1,8)

范围结果将相同:

>>> map(int, "1234567")
[1, 2, 3, 4, 5, 6, 7]
>>> range(1,8)
[1, 2, 3, 4, 5, 6, 7]

答案 1 :(得分:1)

一种方法是使用地图。 map(int, "1234567")

答案 2 :(得分:0)

没有任何“更多的pythonic”方式。而AFAIK,无论你喜欢地图还是列表理解,都是个人品味的问题,但更多的人似乎更喜欢列表理解。

对于你正在做的事情,如果这是在性能敏感的代码中,从旧的程序集例程中取一个页面并使用dict,它会比int更快,而且不会复杂得多:< / p>

In [1]: %timeit [int(x) for x in '1234567']
100000 loops, best of 3: 4.69 µs per loop

In [2]: %timeit map(int, '1234567')
100000 loops, best of 3: 4.38 µs per loop

# Create a lookup dict for each digit, instead of using the builtin 'int'
In [5]: idict = dict(('%d'%x, x) for x in range(10))

# And then, for each digit, just look up in the dict.
In [6]: %timeit [idict[x] for x in '1234567']
1000000 loops, best of 3: 1.21 µs per loop