【发布时间】:2020-08-08 04:32:25
【问题描述】:
我正在阅读 O'Reilly 集合中的高性能 Python 书,在第 11 页我发现这段代码适用于 python 2,这里的重点是制作一条指令,执行(通过矢量化)几个同一时间
import math
def check_prime(number):
sqrt_number = math.sqrt(number)
number_float = float(number)
numbers = range(2, int(sqrt_number)+1)
for i in xrange(0, len(numbers), 5):
# the following line is not valid Python code
result = (number_float / numbers[i:(i+5)]).is_integer()
if any(result):
return False
return True
但我收到此错误
TypeError: unsupported operand type(s) for /: 'float' and 'list'
我尝试将其更改为在 python 3 上工作,这是我的尝试:
import math
def check_prime(number):
sqrt_number = math.sqrt(number)
number_float = float(number)
numbers = list(range(2, int(sqrt_number)+1))
for i in range(0, len(numbers), 5):
# the following line is not valid Python code
result = (number_float / numbers[i:(i+5)]).is_integer()
if any(result):
return False
return True
我将xrange 更改为range,将range(2, int(sqrt_number)+1) 更改为list(range(2, int(sqrt_number)+1)),但我没有成功。我想有一个特殊的集合或类似的运算符,但不知道。如果你们中的任何人可以帮助我,我会非常感激你
【问题讨论】:
标签: python-3.x python-2.x