我是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)这就是我想要做的:
峰值(数字列表)==> 3,5,7,8
谢谢你的帮助!
发布于 2016-12-01 23:43:33
你的代码太复杂了,而且有几个问题。
if num in exceed < elem in numlist: ??你在比较布尔值...也许你一开始需要把instead?for num in exceed:的count设为空,然后在这个循环中测试if elem not in exceed ...overcomplicated.只要保持一个最高的元素值,就像这样用一个循环来做:
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]发布于 2016-12-02 00:32:37
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])])https://stackoverflow.com/questions/40914740
复制相似问题