我在算法方面遇到了一些问题(要找到最大值和最小值),而不是算法本身,而是实现,让我解释一下:
假设列表是n = [0,1,1,2,3,5,8,13,-1,99]
;len(n) = 10
然后globalMin, globalMax = n[0], n[0]
#从列表中跳过1次迭代
现在我要做的是按“对”进行比较,所以由于我已经使用了 n[0],我开始比较 n[1] 和 n[2] 以找到这两个之间的最大值和最小值,然后将其与y 全局最小值,最大值,然后是 n[3] 和 n[4] 并将 nm 与我的全局值进行比较,然后是 n[5] 和 n[6] .. 直到我必须比较 n[9] 和 n[ 10],如您所见,我的列表中不存在 n[10]。我想我可以使用下面的代码通过列表切片来解决这个问题:
for i in range(1, len(n), 2):
if n[i:i+1] > n[i+1:i+2]:
minl, maxl = n[i+1:i+2], n[i:i+1] # minl = local min; maxl = local max
else:
maxl, minl = n[i+1:i+2], n[i:i+1]
但是,如果我的最后一个元素只有一个(如上例所示),这将不起作用,因此,您可以猜到,如果 min 或 max 是我列表中的最后一个元素,它将被忽略。我一直在尝试用索引或列表切片来解决这个问题,但一点运气都没有,有什么建议吗?我必须以“Pythonic”的方式执行此操作,并确保在不使用导入的情况下使其尽可能简单和简短。我已经计算出基于下一张图片的算法的其余部分:图片