📅  最后修改于: 2023-12-03 15:06:33.937000             🧑  作者: Mango
在数据分析或机器学习中经常需要找到列表中的峰值或谷值。下面是一个Python程序来实现该功能。
def find_peak_valley(lst):
"""
在列表中寻找峰值和谷值
:param lst: List[int],包含整数的列表
:return: Tuple[int, int],包含峰值和谷值的元组(如果没有则为None)
"""
peak = None
valley = None
for i in range(len(lst)):
if i == 0:
continue
if i == len(lst) - 1:
continue
if lst[i] > lst[i-1] and lst[i] > lst[i+1]:
peak = lst[i]
elif lst[i] < lst[i-1] and lst[i] < lst[i+1]:
valley = lst[i]
return (peak, valley)
这个函数接受一个包含整数的列表,然后在列表中找到峰值和谷值。它使用一个循环来遍历整个列表,判断每个元素与前一个和后一个元素的关系是否构成峰值或谷值。如果找到峰值或谷值,它们将返回为一个元组。如果没有找到,它们将返回为None。
现在,我们可以测试一下上面的程序是否有效。下面是一些测试用例:
# 测试用例
lst = [1, 2, 3, 2, 1]
print(find_peak_valley(lst)) # (3, 1)
lst = [3, 2, 1]
print(find_peak_valley(lst)) # (None, 1)
lst = [1, 2, 3]
print(find_peak_valley(lst)) # (3, None)
lst = [1, 1, 1]
print(find_peak_valley(lst)) # (None, None)
在这个测试用例中,我们传递了不同的列表和期望的峰值和谷值。现在我们可以运行测试代码来看看它们是否输出了期望的结果。
这个Python程序可以有效地找到列表中的峰值和谷值。当你需要找到凸出的高峰或下陷的低谷时,这个程序将非常有用。