Python 当试图找到从序列中的一个元素到索引更高的元素的最大增量时,如何对空列表执行特殊情况?
正如问题所暗示的,我正在尝试创建一个函数,该函数返回列表中从一个索引到更高索引的数字之间的最大差异 e、 g.Python 当试图找到从序列中的一个元素到索引更高的元素的最大增量时,如何对空列表执行特殊情况?,python,Python,正如问题所暗示的,我正在尝试创建一个函数,该函数返回列表中从一个索引到更高索引的数字之间的最大差异 e、 g.[1,2,3,2]返回2.0 e、 g.[3,2,1,1]返回0.0,因为它不会从左向右增加 我的代码目前是 def最大增量(seq): 最小值=序号[0] 最大值=0 对于范围内的i(len(seq)): 如果(序号[i]最大值): 最大值=顺序[i]-最小值 elif len(seq)==0: 返回0 返回浮动(最大) 它适用于所有情况,除非我给出空列表。我原以为我的上一个elif
[1,2,3,2]
返回2.0
e、 g.[3,2,1,1]
返回0.0,因为它不会从左向右增加
我的代码目前是
def最大增量(seq):
最小值=序号[0]
最大值=0
对于范围内的i(len(seq)):
如果(序号[i]<最小值):
最小值=序号[i]
elif(顺序[i]-最小值>最大值):
最大值=顺序[i]-最小值
elif len(seq)==0:
返回0
返回浮动(最大)
它适用于所有情况,除非我给出空列表。我原以为我的上一个
elif
会覆盖空列表,但显然不是。这就是@EdvardM试图告诉你的(我不知道他为什么不回答自己)
它不能处理空列表,因为函数中的第一条语句访问
seq
中的第一项。还要注意的是,您可以在seq中对elem说,
,而不需要使用我看到的指示符。我如何修改语句,使其也适用于空列表?另外,谢谢,我用elem
:)替换了I
)@edvard您可以提前返回,例如如果不是seq:return None
。还请注意,有时使用math.inf
或-math.inf
效果更好,无需两个单独的案例(一个代表无,一个代表实际值)
def largest_increase(seq):
# check for empty seq list right away:
if len(seq) == 0: # or more simply (and Pythonic): if not seq:
return 0.0
minimum = seq[0]
maximum = 0
for elem in seq:
if (elem < minimum):
minimum = elem
elif (elem - minimum > maximum):
maximum = elem - minimum
return float(maximum)
print(largest_increase([1,2,3,2]))
print(largest_increase([3,2,1,1]))
print(largest_increase([]))
2.0
0.0
0.0