Python程式用於計算連續元素的對數


假設我們有一個包含一些數字的數字字串 s。這些數字可能出現多次。我們必須返回一些對 (數字,計數),表示哪個數字在 s 中連續出現了多少次。要解決此問題,我們可以使用 itertools 庫中的 groupby() 函式。這將返回一個迭代器物件,其中每個專案在第一個位置,另一個 groupby 物件在第二個位置。我們必須為每一對計算 groupby 物件的數量。

因此,如果輸入類似於 s = "11522226551",則輸出將為 [(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)],因為在開頭 1 出現兩次,然後是單個 5,然後是四個 2,依此類推。

要解決此問題,我們將遵循以下步驟:

  • it := 對 s 呼叫 groupby 函式
  • ret := 一個新的列表
  • 對於 it 中的每個對 (數字,gp),執行以下操作:
    • 將 (數字和 gp 列表的長度) 插入 ret
  • 返回 ret

示例

讓我們檢視以下實現以更好地理解

from itertools import groupby

def solve(s):
   it = groupby(s)
   ret = []
   for digit, gp in it:
      ret.append((int(digit), len(list(gp))))
   return ret

s = "11522226551"
print(solve(s))

輸入

"11522226551"

輸出

[(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)]

更新於: 2021年10月12日

432 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告