Python 存储两个数字中较大数字的最佳方法
我正在努力使我的python程序尽可能地优化,这一部分我不确定。我需要存储到目前为止获得的最大值,我有两个候选代码。哪一个时间优化最多?或者有没有更快的方法 代码1:Python 存储两个数字中较大数字的最佳方法,python,optimization,Python,Optimization,我正在努力使我的python程序尽可能地优化,这一部分我不确定。我需要存储到目前为止获得的最大值,我有两个候选代码。哪一个时间优化最多?或者有没有更快的方法 代码1: if value > biggest_value: biggest_value = value 代码2: biggest_value = max(biggest_value, value) 背景: def check_palindrome(num): num = str(num) if len(n
if value > biggest_value:
biggest_value = value
代码2:
biggest_value = max(biggest_value, value)
背景:
def check_palindrome(num):
num = str(num)
if len(num) < 1:
return True
else:
if num[0] == num[-1]:
return check_palindrome(num[1:-1])
else:
return False
def main():
biggest_product = 0
for a in range(100, 1000):
for b in range(100, 1000):
product = a * b
if check_palindrome(product):
# store the biggest_product here
return biggest_product
main()
def check_回文(num):
num=str(num)
如果len(num)<1:
返回真值
其他:
如果num[0]==num[-1]:
返回检查\u回文(num[1:-1])
其他:
返回错误
def main():
最大乘积=0
对于范围(1001000)内的a:
对于范围(1001000)内的b:
产品=a*b
如果检查回文(产品):
#在这里存放最大的产品
返回最大的产品
main()
代码2是更好的选择,因为在代码1中,您必须将数字与2个命令(<=)进行比较,而在代码2中,您只有一个命令
祝你的节目好运,玩得开心
Jonas你可以简单地衡量哪一个在你的情况下更快,然后你就会知道。尽可能地优化这一点可能意味着根本不做这件事(例如预先排序值)、批量做这件事(例如通过numpy)或使用扩展做这件事(例如numba或Cython)。你能提供任何需要优化这个非常小的操作的上下文吗?如果你认为这一行将对你的程序的运行时间产生重大影响,你可以尝试两种方法,看看它是否有任何效果(破坏者:不会)。优化比较在这里看起来像是一条红鲱鱼。函数调用在Python中非常昂贵,这意味着递归回文检查将阻碍对结果所做的任何操作。构造产品的方法也非常低效,每一个值至少检查两次,但大多数值的检查次数要多得多。即使对于第一次检查失败的大数的最坏情况,
return num==num[::-1]
比递归检查快10%(这一差异大致相当于最大值检查的速度)。对于需要检查所有数字的实际回文,您的版本要慢五倍。请注意,如果数字是按升序生成的,则无需检查新数字是否大于上一个数字。您所说的“与3个命令进行比较”是什么意思?只执行一次比较,即
。如果要比较它们,还必须检查它们是否为相同的值。第一个代码不检查它们是否为相同的值。似乎也没有必要进行这种比较——如果它们是相同的,那么根据定义,最大值
已经等于值
,无需做任何事情。哦,好吧,现在我明白你的问题了。谢谢你纠正我;)如果你想知道哪个更快,你可以用这两种代码运行速度测试。