簡體   English   中英

檢查Python中連續相等元素的數量

[英]Check the number of consecutive equal elements in Python

我的目的是確定給定字符串或列表中連續相等元素的最大數量。

我將嘗試使用示例更清楚:

(1,1,1,1) -> {1:4}

(1,1,'a','a',1) ->{1:2, 'a':2}

(2,2,2,0,2,2,0) -> {2:3, 0:1}

我已經厭倦了這樣的事情,但它不起作用:

d={}
for i in range(len(l)):
    while l[i]==l[i+1]:
        d[i]=l.count(i)
return d

一種可能的方法,使用itertools.groupby

from itertools import groupby

t = 1,1,'a','a',1

out = {}
for v, g in groupby(t):
    l = sum(1 for _ in g)
    if out.get(v, float('-inf')) < l:
        out[v] = l

print(out)

印刷:

{1: 2, 'a': 2}

這里的另一個解決方案,使用itertoolsgroupby方法:

from itertools import groupby

l = [2,2,2,0,2,2,0]
elems = list(set(l))
g = [{elem : max([len(list(g)) for k,g in groupby(l) if elem == k])} for elem in elems]
print(g)

結果:

[{0: 1}, {2: 3}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM