首页 > 解决方案 > 找到数组和另一个变量的最大值的最快方法是什么?

问题描述

我有一个列表x和另一个变量y。我想找到所有元素中的最大值xy结合起来。其中哪一个跑得最快?

  1. max(*x, y)
  2. max(max(x), y)
  3. max(x+[y])
  4. 先查找k=max(x)再查找最大值ky使用if else语句

这是代码和timeit结果:

import timeit

setup_="""\
x = [1,2,3,4,5]
y = 6
"""

s="""\
max(*x, y)
"""
print(timeit.timeit(setup=setup_, stmt=s))

x = [1,2,3,4,5]
y = 6
s="""\
max(max(x), y)
"""
print(timeit.timeit(setup=setup_, stmt=s))

x = [1,2,3,4,5]
y = 6
s="""\
max(x+[y])
"""
print(timeit.timeit(setup=setup_, stmt=s))


x = [1,2,3,4,5]
y = 6
s="""\
k=max(x)
if k>=y:
    max_ = k
else:
    max_ = y
"""
print(timeit.timeit(setup=setup_, stmt=s))
0.5596736
0.4779417
0.5439717
0.3297147

有没有比上述方法更快的方法?

标签: pythonpython-3.xperformance

解决方案


通过实现timeit python可以找到最好的方法。

我正在为您的每个程序提供时间,您将看到哪个是最好的

import timeit

# Taking x = [1,2,3,4,5] and y = 8
print(timeit.timeit('max([1,2,3,4,5], [8])', number=10000))
print(timeit.timeit('max(max([1,2,3,4,5]), 8)', number=10000))
print(timeit.timeit('max([1,2,3,4,5]+[8])', number=10000))

Output

0.003129853866994381                                                                                                                   
0.0323555301874876                                                                                                                     
0.007466199807822704

你的第一个想法是最好的max(x, [y])。第 4 点相当于第 2 点,因此没有考虑在内。希望有帮助。


推荐阅读