如何通过比较以前的值找到最大值?

时间:2016-09-15 04:11:11

标签: python arrays database max

我有一个巨大的数据集&复杂的代码,如果我试图通过附加所有中间结果并进行比较来寻找最大值,则需要花费很多时间。所以我想通过比较先前的值来实现算法来找到最大值。 我的算法就像,

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,这是最后一个值。

我该如何修复代码?任何帮助将不胜感激!

2 个答案:

答案 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

你需要对大量数据进行测试,看看它是否足够快。