Skip to main content
 首页 » 编程设计

python之在 Python 集合中查找最小的连续整数

2025年05月04日29TianFang

获取 Python 集合中最小 N 个连续整数的列表的最佳方法是什么?

>>> s=set([5,6,10,12,13,15,30,40,41,42,43,44,55,56,90,300,500]) 
>>> s 
set([42, 43, 44, 5, 6, 90, 300, 30, 10, 12, 13, 55, 56, 15, 500, 40, 41]) 
>>> smallest_contiguous(s,5) 
[40,41,42,43,44] 
>>> smallest_contiguous(s,6) 
[] 

编辑:感谢大家的回答。

请您参考如下方法:

Sven 的想法是正确的。您只需检查前面的数字 N - 1 就可以避免检查超集。

def smallest_contiguous(s, N): 
    lst = list(s) 
    lst.sort() 
    Nm = N-1 
    for i in xrange(len(lst) - Nm): 
        if lst[i] + Nm == lst[i + Nm]: 
            return range(lst[i], lst[i]+N) 
    return [] 

只有当集合作为输入并且知道该集合只包含整数时,这才总是正确的。