有时我们可能需要评估列表中的元素是否严格递增。这意味着数字以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及其函数来获取一组严格递增的数字。
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)]