Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串的每个数字转换为int_Python_String_List Comprehension - Fatal编程技术网

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

Python 将字符串的每个数字转换为int,python,string,list-comprehension,Python,String,List Comprehension,所以我有一个字符串说“1234567”,我想要的端点是一个表[1,2,3,4,5,6,7]的列表 我现在正在做的是 [int(x) for x in "1234567"] 我想知道的是,是否有更好或更像蟒蛇的方法来做到这一点?可能使用内置函数或标准库函数。一种方法是使用map地图(int,“1234567”)一种方法是使用地图映射(int,“1234567”)您可以使用映射功能: map(int, "1234567") 或范围: range(1,8) 带量程的结果将相同: >>

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

我现在正在做的是

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

我想知道的是,是否有更好或更像蟒蛇的方法来做到这一点?可能使用内置函数或标准库函数。

一种方法是使用map<代码>地图(int,“1234567”)

一种方法是使用地图<代码>映射(int,“1234567”)您可以使用
映射功能:

map(int, "1234567")
范围

range(1,8)
带量程的结果将相同:

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

您可以使用
map
功能:

map(int, "1234567")
范围

range(1,8)
带量程的结果将相同:

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

没有什么比这更像蟒蛇的方法了。顺便说一句,你是喜欢地图理解还是列表理解是个人喜好的问题,但更多的人似乎更喜欢列表理解

但是,对于您正在执行的操作,如果这是在性能敏感的代码中,请从旧的汇编例程中获取一个页面,并改用dict,它将比
int
更快,并且不会更复杂:

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

没有什么比这更像蟒蛇的方法了。顺便说一句,你是喜欢地图理解还是列表理解是个人喜好的问题,但更多的人似乎更喜欢列表理解

但是,对于您正在执行的操作,如果这是在性能敏感的代码中,请从旧的汇编例程中获取一个页面,并改用dict,它将比
int
更快,并且不会更复杂:

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

map(int,“1234567”)
。。这是一个单行列表理解大声叫喊..如前所述,
map
可以使用,但我认为它不是`更Pythonic'
map(int,“1234567”)
你所做的是Pythonic够了。。这是一个一行的列表理解,可以大声叫喊。如前所述,
map
可以使用,但我觉得它不是“更像蟒蛇”谢谢,map对我来说已经足够好了。我不能使用range,因为字符串是一个随机数,而不仅仅是升序模式。谢谢,map对我来说已经足够好了。我不能使用range,因为字符串是一个随机数,而不仅仅是升序模式。