Skip to main content
 首页 » 编程设计

python之遍历列表,比较前面的元素和后面的元素

2025年05月04日19powertoolsteam

我正在尝试编写一个函数来验证列表。

基本上,对于列表中的任何给定元素,它前面的项目或其后面的项目必须相同。

一个好的列表定义为:

good_list = ["H", "H", "H", "M", "M", "L", "L", "M", "M", "H", "H", "H"]

坏列表定义为:

bad_list = ["H", "M", "H", "M", "M", "L", "L", "M", "M", "H", "H", "H"]

我花了几天时间尝试不同的解决方案(并阅读 stackoverflow),下面是我目前拥有的解决方案,但它没有返回正确的答案。根据反馈(谢谢!),我对其进行了更新并将参数名称从列表更改为季节,并将其设为 OR。虽然它不应该返回一个“有效列表”?

bad_list = ["H", "M", "H", "M", "M", "L", "L", "M", "M", "H", "H", "H"] 
 
def check_list(season):      
   for i, a in enumerate(season): 
        if season[i] == season[i-1] or season[i] == season[i+1]: 
            return True 
   return False 
 
result = check_list(bad_list) 
 
if result == True: 
    print "Valid list" 
else: 
    print "Invalid list" 

请您参考如下方法:

我会简单地使用 itertools.groupby :

if all(len(tuple(group)) > 1 for key, group in itertools.groupby(the_list)): 
    print "valid" 
else: 
    print "invalid" 

基本上要求“每个元素应该在它之前或之后有一个相等的元素”等同于“列表必须由最小长度为 2 的连续元素组组成”。 groupby 函数对这些进行分组,您只需检查所有 它们的长度是否大于1。