当前位置:  开发笔记 > 编程语言 > 正文

检查列表是否在python中升1

如何解决《检查列表是否在python中升1》经验,为你挑选了1个好方法。

我想检查给定列表是否按1升序排列

所以:

[1,2,3,4] = True [1,3,4,5] = False

并且如果可能的话我想用一些python特定的功能来做-所以不要用for if组合来循环它,而是像all(... for list中的值)

我希望这很清楚



1> Dion..:

这个怎么样?

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的答案):

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

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有