python - 找到数组和另一个变量的最大值的最快方法是什么?
问题描述
我有一个列表x
和另一个变量y
。我想找到所有元素中的最大值x
并y
结合起来。其中哪一个跑得最快?
max(*x, y)
max(max(x), y)
max(x+[y])
- 先查找
k=max(x)
再查找最大值k
并y
使用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
有没有比上述方法更快的方法?
解决方案
通过实现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 点,因此没有考虑在内。希望有帮助。
推荐阅读
- linux - linux下nvcc报错:包含向量,设备代码不支持
- amazon-web-services - 需要不同数量的基于 Docker 的隔离应用程序,这些应用程序具有来自 AWS 的不同公共 IP
- android - android中的改造响应返回空值
- python - 从 Pandas 中的字符串中删除子字符串
- php - 使用 Laravel Passport 设置 API - 为什么我会收到未经授权的错误?
- c++ - 如何在不同的头文件中实现成员函数?
- angular - 有什么方法可以混合 Angular Material mat-sidenav 的“推送”和“过度”模式?
- sympy - 在 sympy 中区分用户功能?
- c# - 如何检查数据库中是否有任何新数据或使用 EF Core 使用新数据更新 DbSet
- html - Visual Studio 代码搜索/替换中的正则表达式以更改具有任何结构的 url