我是Python新手,任何人都可以指出我在代码中犯下的错误:
numlist = [3,2,5,5,7,6,1,8,4]
def peaks(numlist):
exceed = []
for elem in numlist:
for num in exceed:
if elem not in exceed:
if num in exceed < elem in numlist:
exceed = exceed + [elem]
print(exceed)
这就是我打算做的事情:
peak(numlist)= =&gt; [3,5,7,8]
感谢您的帮助!!
答案 0 :(得分:5)
您的代码过于复杂,并且有几个问题。
if num in exceed < elem in numlist:
??你比较布尔......也许你需要count
代替?for num in exceed:
一开始就空了,你在这个循环中测试if elem not in exceed
...过于复杂。只需保持一个最高的元素值,用这样的循环来完成:
numlist = [3,2,5,5,7,6,1,8,4]
maxvalue=numlist[0]-1
outlist=[]
for e in numlist:
if e<=maxvalue:
pass
else:
maxvalue = e
outlist.append(e)
print(outlist)
结果:
[3, 5, 7, 8]
答案 1 :(得分:0)
numlist的第一个成员将是答案的第一个成员。任何其他元素只有在超过numlist左侧部分的最大值时才会被添加到答案中:
numlist = [3,2,5,5,7,6,1,8,4]
print ([numlist[0]]+[n for i,n in enumerate(numlist[1:]) if n>max(numlist[:i+1])])