我有一个庞大的数据集&复杂的代码,如果我试图通过附加所有中间结果并进行比较来找到最大值,则需要花费大量的时间。所以我想实现一个通过比较前一个值来求最大值的算法。 我的算法是这样的
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,这是最后一个值。你知道吗
我应该如何修复代码?任何帮助都将不胜感激!你知道吗
为什么不使用一个变量进行比较直到
length - 1
?而且,每次迭代都会将oldmax
重置为第一个元素,从而导致结果不准确。设置初始值,但不要更改:现在只需要一个变量
max_value
,它有第一个元素的初始值。由于元素i + 1
的访问,循环从第一个元素转到length - 1
。如果最大值小于下一个值,请将最大值重新指定给下一个值。我还消除了额外的,如果没有做什么,只有检查,如果它是更大的。你知道吗您只需使用内置的^{} 函数就可以摆脱上面的所有代码,该函数接受任何iterable并返回最大值:
如果你想这样做,你不需要使用
index
,这可能会稍微慢一些。你知道吗您可以简单地执行以下操作:
不过,您需要对大量数据进行测试,看看这是否足够快。你知道吗
相关问题 更多 >
编程相关推荐