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

更新于:26-8-2020

277 次浏览

开启您的职业生涯

通过完成课程获得认证

立刻开始
广告