more_itertools.consecutive_groups是在4.0版中添加的。
演示版
import more_itertools as mititerable = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20][list(group) for group in mit.consecutive_groups(iterable)]# [[2, 3, 4, 5], [12, 13, 14, 15, 16, 17], [20]]
应用此工具,我们将生成一个生成器函数来查找连续数字的范围。
def find_ranges(iterable): """Yield range of consecutive numbers.""" for group in mit.consecutive_groups(iterable): group = list(group) if len(group) == 1: yield group[0] else: yield group[0], group[-1]iterable = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20]list(find_ranges(iterable))# [(2, 5), (12, 17), 20]
所述源执行模拟一个经典配方(由@Nadia Alramli所证明)。
注意:more_itertools是可通过安装的第三方软件包pip install more_itertools。



