gpt4 book ai didi

python - 在 python 列表中查找最小 float 的最有效方法

转载 作者:太空狗 更新时间:2023-10-29 20:36:09 24 4
gpt4 key购买 nike

快题,在长列表(10000+元素)中寻找最小数字(float)效率更高

是吗

min(mylist)

mylist.sort() 

然后返回

mylist[0]

或者别的……

谢谢!

最佳答案

首先,如果您关心 Python 的性能(这并不总是一件值得关心的事情,但那是另一回事),您应该使用 timeit module .即使在 C 中,也很难预测某些函数在编译后的行为,而在 Python 中更难。人们经常自信地表达关于哪些功能更快哪些依赖于数据的意见。然后——通过使用 timeit,我的意思是——你可以自己发现。

其次,如果您真的关心浮点列表的性能,您根本不应该使用列表,而应该使用 numpy 数组。在 Python 2.7.2 下使用 IPython,这使得计时变得容易:

In [41]: import random, numpy
In [42]: a = [0.1*i for i in range(10**5)]
In [43]: timeit min(a)
100 loops, best of 3: 4.55 ms per loop
In [44]: timeit sorted(a)[0]
100 loops, best of 3: 4.57 ms per loop
In [45]: random.shuffle(a)
In [46]: timeit min(a)
100 loops, best of 3: 6.06 ms per loop
In [47]: timeit min(a) # to make sure it wasn't a fluke
100 loops, best of 3: 6.07 ms per loop
In [48]: timeit sorted(a)[0]
10 loops, best of 3: 65.9 ms per loop
In [49]: b = numpy.array(a)
In [50]: timeit b.min()
10000 loops, best of 3: 97.5 us per loop

我们注意到一些事情。 (1) Python 的排序 (timsort) 在已排序的数据上运行良好,因此对已排序的列表进行排序几乎没有惩罚。 (2) 另一方面,对随机列表进行排序要慢得多,而且随着数据变大,这种情况只会变得更糟。 (3) float 组上的 Numpy.min() 比 Python 列表上的 min 快 60 倍,因为它不必那么通用。

关于python - 在 python 列表中查找最小 float 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9413367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com