解决数组中的最大增量

时间:2018-12-27 00:46:44

标签: python loops for-loop

我在确定for循环中计算出的最大值时遇到问题。我正在使用Python评估数组以确定序列中的最大增量,即最大值i + 1-i。

我遇到两个问题:

  1. SyntaxError:在函数外部“返回”
  2. 我不知道如何从for循环中提取最大的迭代值

尝试使用其他变量比较最大值等

prices=[7,1,5,3,6,4]
profit_loss=0
for i in range(0,len(prices)-1):
        profit_loss=prices[i+1] - prices[i]
        return(profit_loss)
        print(profit_loss)

最大值应为4,我的打印结果如下:

-6
4
-2
3
-2

这个问题很独特,因为我想了解为什么没有必要使用return函数。

2 个答案:

答案 0 :(得分:4)

您不能在函数外return。实际上,您在这里不需要return

prices = [7,1,5,3,6,4]
profit_loss = -float('inf')

for i in range(len(prices)-1):
    change = prices[i+1] - prices[i]
    if change > profit_loss:
        profit_loss = change

print(profit_loss)  # 4

比位置索引更惯用,请使用zip逐对迭代prices的元素:

for i, j in zip(prices, prices[1:]):
    change = j - i
    if change > profit_loss:
        profit_loss = change

更简洁地说,将max与生成器理解一起使用:

profit_loss = max(j - i for i, j in zip(prices, prices[1:]))  # 4

或使用等效的functional

from operator import sub
profit_loss = max(map(sub, prices[1:], prices))  # 4

答案 1 :(得分:0)

这应该有效:

prices = [7, 1, 5, 3, 6, 4]
profit_loss = 0
for i in range(0, len(prices)-1):
    res = prices[i+1] - prices[i]
    if res > profit_loss:
        profit_loss = res
print(profit_loss)