2016-12-01 147 views
1

我是新来的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) 

这就是我打算做:

peaks(numlist)= => [3,5,7,8]

感谢您的帮助!

+3

'为NUM在超过:'是永远不会做任何事情,因为该名单始终是空的,没有增长的机会。 –

+0

@ Madik088对不起,你在这里有几个问题。 –

+0

谢谢你们@Alex Hall和@ Jean-françois-fabre! – Madik088

回答

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] 
0

numlist的第一个成员将alwas成为第一批成员答案。当他们超过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])])