2016-12-01 144 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])])