Skip to main content
 首页 » 编程设计

python之检查列表是否在python中递增1

2025年05月04日8shihaiming

我想检查我给定的列表是否递增 1

所以:

[1,2,3,4] = 真 [1,3,4,5] = 假

如果可能的话,我想用一些特定于 python 的函数来完成它——所以不要用 for if 组合循环它,而是用类似 all(... for values in list) 的东西来循环它

我希望这是清楚的

请您参考如下方法:

这个怎么样?

def has_stepsize_one(it): 
    return all(x2 - x1 == 1 for x1, x2 in zip(it[:-1], it[1:])) 
>>> has_stepsize_one([1,2,3,4]) 
True 
 
>>> has_stepsize_one([1,3,4,5]) 
False 

这应该适用于任何集合,而不仅仅是列表。

请记住,对于少于两个元素的集合,这将返回 True:

>>> has_stepsize_one([1]) 
True 
 
>>> has_stepsize_one([]) 
True 

如果您不想这样,则必须检查迭代器的长度。

对于不支持 getitem 的通用迭代器,比较 itertools.count 可能是最好的方法(类似于 kaya3's answer ):

import itertools 
 
def has_stepsize_one(it): 
    it = iter(it) 
    try: 
        first = next(it) 
    except StopIteration: 
        return True 
 
    return all(x == y for x, y in zip(it, itertools.count(first + 1))) 
>>> has_stepsize_one((i for i in range(10))) 
True