我有一个巨大的数据集&复杂的代码,如果我试图通过附加所有中间结果并进行比较来寻找最大值,则需要花费很多时间。所以我想通过比较先前的值来实现算法来找到最大值。 我的算法就像,
for i in range(len(y)):
oldmax = y[0]
if oldmax >= y[i]:
pass
else:
new_max = y[i]
然后我想存储这个newmax并与下一个字符串y [i + 1]进行比较并继续(只有最大值才能在结束时存活)。 但是我不确定如何将这个new_max设置为在下一个循环中进行比较。例如,设y = [3,1,5,6,4]。由于y [0]大于y [1],它将通过直到它满足5.但由于6和4也大于3,new_max最终为4,这是最后一个值。
我该如何修复代码?任何帮助将不胜感激!
答案 0 :(得分:1)
为什么不直接使用一个变量进行比较直到length - 1
?此外,您会在每次迭代时将oldmax
重置为第一个元素,从而导致不准确的结果。设置它的初始值但不要更改它:
max_value = y[0]
for i in range(len(y) - 1):
if max_value <= y[i + 1]
max_value = y[i + 1]
现在,只有一个变量max_value
具有第一个元素的初始值。由于元素length - 1
的访问,循环从第一个元素转到i + 1
。如果max小于下一个值,则将max重新分配给下一个值。如果没有做任何事情,我也消除了额外费用,只检查它是否更大。
你可以通过使用内置max
函数来删除上面的所有代码,它接受任何iterable并返回最大值:
max_value = max(y)
答案 1 :(得分:0)
如果 你想这样做,你不需要使用index
,这可能会在大数据上稍微慢一些。
您可以这样做:
newmax = y[0]
for new in y:
newmax = new if new > newmax else newmax
你需要对大量数据进行测试,看看它是否足够快。