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

2024-09-30 06:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个庞大的数据集&复杂的代码,如果我试图通过附加所有中间结果并进行比较来找到最大值,则需要花费大量的时间。所以我想实现一个通过比较前一个值来求最大值的算法。 我的算法是这样的

for i in range(len(y)):
  oldmax = y[0]
  if oldmax >= y[i]:
    pass
  else:
    new_max = y[i]

然后我想存储这个newmax,并与下一个字符串y[I+1]进行比较,然后继续(只有最大值应该在末尾保留)。 但是我不知道如何设置这个新的最大值,以便在下一个循环中进行比较。例如,设y=[3,1,5,6,4]。因为y[0]大于y[1],所以它将通过,直到它遇到5为止。但是由于6和4也大于3,新的最大值最终是4,这是最后一个值。你知道吗

我应该如何修复代码?任何帮助都将不胜感激!你知道吗


Tags: 数据代码in算法newforlenif
2条回答

为什么不使用一个变量进行比较直到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,它有第一个元素的初始值。由于元素i + 1的访问,循环从第一个元素转到length - 1。如果最大值小于下一个值,请将最大值重新指定给下一个值。我还消除了额外的,如果没有做什么,只有检查,如果它是更大的。你知道吗


您只需使用内置的^{}函数就可以摆脱上面的所有代码,该函数接受任何iterable并返回最大值:

max_value = max(y)

如果你想这样做,你不需要使用index,这可能会稍微慢一些。你知道吗

您可以简单地执行以下操作:

newmax = y[0]
for new in y:
    newmax = new if new > newmax else newmax

不过,您需要对大量数据进行测试,看看这是否足够快。你知道吗

相关问题 更多 >

    热门问题