用 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 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

立刻開始
廣告
© . All rights reserved.