Python 如何找到一个字符串在列表中连续重复的最大数量?
例如,假设列表如下所示:Python 如何找到一个字符串在列表中连续重复的最大数量?,python,algorithm,Python,Algorithm,例如,假设列表如下所示: ['ABC', 'ABC', 'XYZ', 'ABC', 'ABC', 'ABC'] 然后你输入'ABC' 它应该返回数字3,因为'ABC'连续重复的最大次数是3。 你打算怎么做 我试着在列表中反复检查索引是否为“ABC”,下一个索引是否为“ABC”,但这几乎不可能找到最大数。您可以使用对连续元素进行分组的方法来完成此操作。通过不提供关键功能,它将相等的元素分组 我们需要使用sum(1表示v中的uu)来获得运行的长度(因为它是一个可数而不是一个列表,我们不能使用len
['ABC', 'ABC', 'XYZ', 'ABC', 'ABC', 'ABC']
然后你输入'ABC'
它应该返回数字3
,因为'ABC'
连续重复的最大次数是3
。
你打算怎么做
我试着在列表中反复检查索引是否为“ABC”,下一个索引是否为“ABC”,但这几乎不可能找到最大数。您可以使用对连续元素进行分组的方法来完成此操作。通过不提供关键功能,它将相等的元素分组
我们需要使用sum(1表示v中的uu)
来获得运行的长度(因为它是一个可数而不是一个列表,我们不能使用len
)和max
来获得最大的长度
从itertools导入groupby
def最长运行时间(lst,元件):
返回最大值(k的和(v中的u为1),如果k==元素,则返回groupby(lst)中的v)
例如:
>>最长运行时间(lst,“ABC”)
3.
>>>最长运行时间(lst,'XYZ')
1.
试试:
从itertools导入groupby
x=['ABC','ABC','XYZ','ABC','ABC','ABC','ABC']
y=dict(gr的排序([(gr,len(list(val))),gr的排序([(gr,len(val)),groupby中的val(x,lambda el:el)],key=lambda el:el[1]))
它将返回每个元素的最大连续出现次数的dict
,因此要获得ABC
的最大连续出现次数,只需执行以下操作:
>y[“ABC”]
3.
简而言之-groupby
将连续发生的事件分组在一起
len(list(val))
将对它们进行计数
接下来,我们对它们进行排序,以获得最后连续出现次数最多的元素
然后我们转换为dict
——利用这样一个事实,即在同一个键多次出现的情况下,dict
总是取最后一个键,由于排序,它总是出现次数最多的键