具有升序降序的山谷的python函数
Posted
技术标签:
【中文标题】具有升序降序的山谷的python函数【英文标题】:python function for valley with ascending descending 【发布时间】:2018-01-20 17:26:02 【问题描述】:如果一个整数列表由一系列严格递减的值和一系列严格递增的值组成,则称该列表为谷。递减序列和递增序列的长度必须至少为 2。递减序列的最后一个值是递增序列的第一个值。
【问题讨论】:
你到底想要什么?这是作业吗? 【参考方案1】:def valley(list):
if(len(list)==0):
return(True)
if(len(list)==1):
return(False)
if(list[0]<list[1]):
return(False)
for i in range(0,len(list)-1):
if(list[i]<list[i+1]):
pos=i
break
if(list[i]==list[i+1]):
return(False)
else:
return(False)
for i in range(pos,len(list)-1):
if(list[i]>=list[i+1]):
return(False)
return(True)
【讨论】:
【参考方案2】:def valley(l):
if len(l) < 4:
return False
else:
for i in range(0,l.index(min(l))):
if l[i] > l[i+1]:
i+=1
else: return False
for j in range(l.index(min(l)),len(l)-1):
if l[j] < l[j+1]:
j+=1
else: return False
if i==l.index(min(l)) and j==len(l)-1:
return True
else: return False
【讨论】:
【参考方案3】:def valley(list):
if (len(list) < 3):
return False
ucount = 1
lcount = 1
for i in range(0, len(list) - 1):
if list[i] > list[i + 1]:
if lcount > 1:
return False
ucount = ucount + 1
if list[i] < list[i + 1]:
lcount = lcount + 1
if list[i] == list[i + 1]:
return False
if ucount >1 and lcount > 1:
return True
else:
return False
这个代码对我有用。
【讨论】:
【参考方案4】:我认为一个更好的答案会结合上面的一些答案来给出一个非常精简的代码,如下所示。
def valley(l):
if(len(l)<3):
return(False)
for i in range(0,len(l)-1):
if(l[i]<l[i+1]):
for i in range(i,len(l)-1):
if(l[i]>=l[i+1]):
return(False)
return(True)
elif(l[i]==l[i+1]):
return(False)
else:
return(False)
【讨论】:
以上是关于具有升序降序的山谷的python函数的主要内容,如果未能解决你的问题,请参考以下文章