作者:夜-依晨_920 | 来源:互联网 | 2024-12-27 15:40
Python - 检查列表中是否存在交替峰值
在某些编程任务中,我们需要验证一个列表中的元素是否以交替峰值的形式排列。即每个元素要么大于其前后两个元素,要么小于其前后两个元素。本文将介绍两种实现此功能的方法。
参考资料: GeeksforGeeks
给定一个列表,我们的任务是编写一个 Python 程序来测试该列表是否为交替峰值列表。
示例 1:
输入: test_list = [2, 4, 1, 6, 4, 8, 0]
输出: True
解释: 4, 6, 8 形成交替峰值(2 <4 > 1 <6 > 4 <8 > 0)。
示例 2:
输入: test_list = [2, 4, 1, 6, 4, 1, 0]
输出: False
解释: 1 不是峰值(4 > 1 <0),因此不符合交替峰值条件。
方法 1: 使用循环
在这种方法中,我们使用条件语句逐个检查每个元素的前一个和后一个元素是否符合交替峰值的要求。如果发现任何不符合条件的情况,则返回 False 并退出循环。
# Python3 代码示例:使用循环检查交替峰值
# 初始化列表
test_list = [2, 4, 1, 6, 4, 8, 0]
# 打印原始列表
print("The original list is : " + str(test_list))
res = True
for idx in range(1, len(test_list) - 1):
# 如果不是交替峰值则中断循环
if not ((test_list[idx - 1] test_list[idx] and test_list[idx + 1] > test_list[idx])):
res = False
break
# 打印结果
print("Is list forming alternate peaks? : " + str(res))
输出:
The original list is : [2, 4, 1, 6, 4, 8, 0]
Is list forming alternate peaks? : True
方法 2: 使用 all() 和生成器表达式
这种方法使用 all() 函数结合生成器表达式来一次性检查所有元素是否满足交替峰值的条件。all() 函数会遍历整个列表并确保每个元素都符合条件。
# Python3 代码示例:使用 all() 和生成器表达式检查交替峰值
# 初始化列表
test_list = [2, 4, 1, 6, 4, 8, 0]
# 打印原始列表
print("The original list is : " + str(test_list))
# 使用 all() 和生成器表达式检查交替峰值
res = all(((test_list[idx - 1] test_list[idx] and test_list[idx + 1] > test_list[idx])) for idx in range(1, len(test_list) - 1))
# 打印结果
print("Is list forming alternate peaks? : " + str(res))
输出:
The original list is : [2, 4, 1, 6, 4, 8, 0]
Is list forming alternate peaks? : True