如何让我的代码更快地找到最小值?
How can I make my code to find the minimum faster?
我有一个关于如何以我的方式在列表中找到最小值的问题:
我有一个很大的列表,其中每条记录都是这样的:
['22:00:19', '0026f88e557225333f01', '23', '37', '', '176.2', '0', '60', 'SOMETHING',
3.318717958567554e-05]
但是列表中的第一条和最后一条记录不包含最后一个数字:
例如:
['22:00:09', '0026f88e557225333f01', '23', '37', '', '176', '0', '60', '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, size, 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
我有一个关于如何以我的方式在列表中找到最小值的问题:
我有一个很大的列表,其中每条记录都是这样的:
['22:00:19', '0026f88e557225333f01', '23', '37', '', '176.2', '0', '60', 'SOMETHING',
3.318717958567554e-05]
但是列表中的第一条和最后一条记录不包含最后一个数字:
例如:
['22:00:09', '0026f88e557225333f01', '23', '37', '', '176', '0', '60', '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, size, 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