python最⼩的浮点数_在pythonlis中到最⼩浮点数的最有效
⽅法
⾸先,如果您关⼼Python中的性能(这并不总是⼀件值得关注的事情,但这是另⼀个对话),那么您应该使⽤timeit module。即使在C语⾔中,也很难预测某些函数在编译后的⾏为,⽽在Python中更难预测。⼈们常常⾃信地表达⾃⼰的观点,即哪些功能更快,哪些依赖于数据。然后——我的意思是,⽤时间——你就可以发现你⾃⼰了。
其次,如果您真正关⼼浮动列表的性能,那么您根本不应该使⽤列表,⽽应该使⽤numpy数组。在Python2.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)
random在python中的意思
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的sort(timsort)在已排序运⾏的数据上⼯作得⾮常好,因此对已排序
的列表进⾏排序⼏乎没有任何惩罚。(2) 另⼀⽅⾯,对随机列表进⾏排序要慢得多,⽽且这只会随着数据的增⼤⽽变得更糟。(3) float数组中的Numpy.min()⽐Python列表中的min快60倍,因为它不必是⼀般的。