如何解决如何使我的代码更快地找到最小值?
我有一个问题,如何以自己的方式在列表中找到最小值:
我有一个很大的清单,其中的每条记录都是这样的:
['22:00:19','0026f88e557225333f01','23','37','','176.2','0','60','SOMETHING',3.318717958567554e-05]
但是列表中的第一个和最后一个记录不包含最后一个数字:
例如:
['22:00:09','176','SOMETHING']
我需要在我的函数的每次调用中找到最后一列3.318717958567554e-05
的最小值及其索引。
这是我的代码:
def find_min(data,size,num):
for index,i in enumerate(data):
if index == 0 or index == data.__len__() -1: continue
if index == 1:
minimum = float(i[9])
idx = index
continue
if float(i[9]) < minimum or float(i[9]) < num:
minimum = float(i[9])
idx = index
return idx,minimum
num
是用户定义的阈值,用于计算最小值。 (最小值应小于该值。)
这段代码可以正常工作,我可以找到想要的,但是如何使我的代码更快,因为我千次调用了此函数,并且使用了巨大的数据集,结果由于执行速度慢,执行时间非常长。 >
解决方法
摆脱所有if
语句,并将数组切成您所关心的那些。
将i[9]
转换为仅浮动一次。
def find_min(data,size,num):
idx = 1
minimum = float(data[1][9])
for index,i in enumerate(data[2:-1]):
f = float(i[9])
if f < minimum or f < num:
minimum = f
idx = index + 2 # +2 because of the slicing
return idx,minimum
或者如果列表太大以至于无法切成一片,只需遍历索引即可:
def find_min(data,num):
idx = 1
minimum = float(data[1][9])
for index in range(2,len(data)-1):
f = float(data[index][9])
if f < minimum or f < num:
minimum = f
idx = index
return idx,minimum
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。