我需要 python 函式的幫助,如果它們被另一個數字分隔,它會為我計算串列中有多少重復的數字。
nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]
應該回來
{
[3]: 2,
[1]: 3,
[2]: 5,
[1, 1]: 2,
[2, 2, 2, 2]: 1
}
uj5u.com熱心網友回復:
您可以使用itertools.groupby收集連續數字并對其collections.Counter進行計數:
nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]
from itertools import groupby
from collections import Counter
dict(Counter(tuple(g) for k,g in groupby(nums)))
注意。你不能使用串列作為字典鍵,我用元組代替
輸出:
{(3,): 2,
(1,): 3,
(2,): 5,
(1, 1): 2,
(2, 2, 2, 2): 1}
uj5u.com熱心網友回復:
請注意,您不能將串列作為鍵。相反,我們可以使用字串。
這將回傳所有長度的條紋,而不僅僅是最大值和最小值。如果您愿意,請在評論中說。
nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]
results = {}
streak = 0
previous = None
for num in nums:
print(num)
if previous != num:
streak = 0
streak = 1
previous = num
for i in range(1, streak 1):
results[str(num)*i] = results.get(str(num)*i, 0) 1
如果您需要解釋,請發表評論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367463.html
上一篇:更簡潔的串列表示
