python - 查找整数列表中是否存在山谷
问题描述
如果一个整数列表由一系列严格递减的值和一系列严格递增的值组成,则称该列表为谷。递减序列和递增序列的长度必须至少为 2。递减序列的最后一个值是递增序列的第一个值。
编写一个 Python 函数 valley(l),它接受一个整数列表,如果 l 是一个山谷,则返回 True,否则返回 False。
这里有一些例子来展示你的函数应该如何工作。
>>> valley([3,2,1,2,3]) True >>> valley([3,2,1]) False >>> valley([3,3,2,1,2]) False
我已经两天没睡了,我能写的最好的就是这段代码
def valley(list):
first =False
second=False
midway=0
if(len(list)<2):
return False
else:
for i in range(0,len(list)):
if(list[i]<list[i+1]):
first=True
midway=i
break
for j in range(midway,len(list)-1):
if(list[j]<list[j+1] and j+1==len(list)):
Second=True
break
if(list[j]>=list[j+1]):
second=False
break
if(first==True and second==True):
return True
else:
return False
解决方案
我发现的解决方案也适用于如果数字不是完美的顺序并且最小值必须等于 1,我想说的是如果列表是假设 [14,12,10, 5,3,6,7,32,41],这里也形成了一个山谷,因为值下降到 3(最低),然后再次增加。列表如 [4,3,2,1,2,3,4] 是一个完美的山谷。
解决方案:
def valley(lst):
if len(lst)<2:
return False
else:
p = lst.index(min(lst))
for i in range (0,p):
x = (lst[i] > lst[i+1])
for q in range (p,len(lst)-1):
y = (lst[q]< lst[q+1])
return (x==y)
如果这解决了问题并且最有帮助,请不要忘记接受它,谢谢。
推荐阅读
- javascript - 是否可以在 HighChartJS 中创建分组条形图?
- yii2 - yii2如何查看自己的实体?
- flutter - 在颤动中显示和隐藏弹出窗口
- php - 如何使用 ODBC 通过 PHP 连接 Paradox DB?
- python - Python中有没有办法逐个读取文本文件?
- android - 如何使用 API 提供的颜色以编程方式更改 colorPrimary?
- javascript - Google Content Api for Shopping - 只列出想要的产品功能
- python - Python 3:当本地模块存在同名时导入核心模块?
- c# - Visual Studio 中的 IIS-Express 错误 - 无法运行项目
- android - 运行我的颤振应用程序时显示白色空白屏幕