python - 如何查看列表是否包含连续数字

标签 python list

我想测试一个列表是否包含连续的整数并且没有重复的数字。 例如,如果我有

l = [1, 3, 5, 2, 4, 6]

它应该返回 True。

在不修改原始列表的情况下,如何检查列表是否最多包含n个连续数字? 我考虑过复制列表并删除原始列表中出现的每个数字,如果列表为空,则它将返回 True。

有更好的方法吗?

最佳答案

对于整个列表,它应该像这样简单

sorted(l) == list(range(min(l), max(l)+1))

这会保留原始列表,但如果您的列表特别长,制作副本(然后排序)可能会很昂贵。

请注意,在 Python 2 中,您可以简单地使用以下内容,因为 range 返回了一个 list 对象。在 3.x 及更高版本中,函数已更改为返回 range 对象,因此在与 sorted(l)< 比较之前需要显式转换为 list/

sorted(l) == range(min(l), max(l)+1))

要检查 n 条目是否连续且不重复,会变得有点复杂:

def check(n, l):
    subs = [l[i:i+n] for i in range(len(l)) if len(l[i:i+n]) == n]
    return any([(sorted(sub) in range(min(l), max(l)+1)) for sub in subs])

关于python - 如何查看列表是否包含连续数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575235/

相关文章:

python - 如果不是某个单词,则将随机字符放入字符串中

python - 根据 Pandas 中的另一个值更改一个值

python - Django:ValueError:尝试在干净的环境中创建时无法在 ForeignField 上分配任何内容失败

c++ - 链表中的节点最后没有删除

java - 获取一系列List<Object>列表

python - Python 中 Azure Functions 上的文件操作

python - 将嵌套列表转换为 pd Dataframe 的快速且 Pythonic 的方法

list - 将列表元素分配给变量

python - 将函数输出放入 Python 列表

python - Django 应用程序安装的 "Could not find a version that satisfies the requirement"错误