在我们需要根据条件搜索最佳元素的函数中(例如 Min Max 函数:搜索最小值或最大值),我看到一些(或许多)人检查保存最佳答案的变量是否为 None并排循环进行条件检查。
为了说明这一点,让以下2个源代码: A)使用循环内的
测试:is None
list_vals = [10,9,8,7,6,5,4,3,2,1]
min_val = None
for val in list_vals:
if min_val is None or val<min_val:
min_val = val
print("min = ", min_val)
B) 最好的接收第一个元素
list_vals = [10,9,8,7,6,5,4,3,2,1]
min_val = list_val[0]
for val in list_vals:
if val<min_val:
min_val = val
print("min = ", min_val)
我的问题是:
为什么有些人采用第一种形式(A)?这是一些好的做法吗?
如果我们使用第一个 from,那就意味着在每次迭代中我们都会检查变量是否为 None,我不知道编译器是否对此进行了优化。
为了查看此示例的执行时间是否相似,我计算了方法A和B的时间:
nb = 100000000 # 100_000_000
list_vals = random.sample(range(nb), nb)
时间(A) = 24.00 秒
时间(B) = 19.31 秒
我用其他长度重复测试,结果是一样的,B方法比A方法分析(相对)快。
感谢您的帮助。
慕神8447489
相关分类