在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)]