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)]
廣告