我在确定for循环中计算出的最大值时遇到问题。我正在使用Python评估数组以确定序列中的最大增量,即最大值i + 1-i。
我遇到两个问题:
尝试使用其他变量比较最大值等
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函数。
答案 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)