用 Python 查找列表中递增数字的组
有时我们可能需要评估列表中的元素是否严格递增。这意味着这些数字以 1 的间隔递增。在本文中,我们将看到如何找出给定列表中严格递增的数字组。
直接比较
通过这种方法,我们会逐步增加每个数字的索引,并将其与列表中的前一个数字进行比较。只要第二个数字比第一个数字大 1,我们就会将这些数字追加到一个内部列表中。否则,该数字将成为外部列表的一部分。
示例
listA = [11, 12, 6, 7, 8, 12, 13,14] res = [[listA[0]]] for i in range(1, len(listA)): if listA[i - 1] + 1 == listA[i]: res[-1].append(listA[i]) else: res.append([listA[i]]) print(res)
输出
运行上述代码,得到以下结果 -
[(11, 12), (6, 7, 8), (12, 13, 14)]
使用 itertools
通过这种方法,我们使用 itertools 及其函数来获取严格递增的数字集合。
示例
from itertools import groupby, cycle def groupincreasing(l): inner_list = cycle(listA) next(inner_list) groups = groupby(l, key=lambda j: j + 1 == next(inner_list)) for k, v in groups: if k: yield tuple(v) + (next((next(groups)[1])),) listA = [11, 12, 6, 7, 8, 12, 13,14] print(list(groupincreasing(listA)))
输出
运行上述代码,得到以下结果 -
[(11, 12), (6, 7, 8), (12, 13, 14)]
广告