所以我有一个字符串说“1234567”,我想要的端点是[1,2,3,4,5,6,7]形式的列表
我目前正在做的是这个
[int(x) for x in "1234567"]
我想知道的是,如果有更好或更多的Pythonic方法吗?可能使用内置函数或标准库函数。
答案 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