返回超出所有先前元素的元素列表

时间:2016-12-01 15:39:34

标签: python python-3.x

我是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]

感谢您的帮助!!

2 个答案:

答案 0 :(得分:5)

您的代码过于复杂,并且有几个问题。

  • if num in exceed < elem in numlist: ??你比较布尔......也许你需要count代替?
  • 当Alex评论时,
  • 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])])