Python 查找列表中重复数字的最大序列
要解决的问题是找到列表中重复数字的最大序列。例如,如果列表是Python 查找列表中重复数字的最大序列,python,list,sequence,Python,List,Sequence,要解决的问题是找到列表中重复数字的最大序列。例如,如果列表是[2,3,4,4,4,4,5,4,7,6]并且我正在寻找4的最大序列,我将返回3 到目前为止,我只提出了一个循环来计算一行中指定数字的数量,但您必须考虑其他数字,并且还可以比较一行中的3“4”与2“4”。任何帮助都将不胜感激 def find(list): x = [2,3,4,4,5,5,5,5,6,7,8] print(find(x)) 上面的代码只是基本布局。我不需要整个函数的答案,只需要主要的逻辑和解释如果
[2,3,4,4,4,4,5,4,7,6]
并且我正在寻找4的最大序列,我将返回3
到目前为止,我只提出了一个循环来计算一行中指定数字的数量,但您必须考虑其他数字,并且还可以比较一行中的3“4”与2“4”。任何帮助都将不胜感激
def find(list):
x = [2,3,4,4,5,5,5,5,6,7,8]
print(find(x))
上面的代码只是基本布局。我不需要整个函数的答案,只需要主要的逻辑和解释如果您试图用Python实现它,您应该使用
groupby
,默认情况下,将对象分组为(对象名称,对象列表)
,因此:
a=[1,0,1,1,2,2,3]
groupby(a)~[(1[1]),(0[0]),(1[1,1]),(2[2,2,2]),(3[3])]
#我在这里使用“~”,因为它实际上不是一个列表,它是一个生成器,但是我知道
您可以轻松地使用列表理解来获取所需内容
从itertools导入groupby
重复_长度=[sum(1表示组中的u)表示u,groupby中的组(x)]
#“sum(1代表uin group)”是解决“group”不是一个列表且没有长度这一问题的一种方法
然后找到该列表的最大值。您需要跟踪两个变量,连续值的当前计数
(计数)
,以及到目前为止的最大计数(最大计数)
。当观察到不同的值时,可以重置计数
并更新最大计数
,然后继续循环
def get_longest_seq(l, val):
count = 0
max_count = 0
for e in l:
if e == val:
count += 1
elif count > 0:
max_count = max(max_count, count)
count = 0
max_count = max(max_count, max) # case when the sequence is at the end
return max_count
l = [2,2,3,2,2,2,2,3,3,4,4,4,5,4,4,7,6]
print(get_longest_seq(l, 4))
家庭作业的全部要点是你自己做。刚开始用蜡纸/蜡纸就可以了。另外,没有代码可以帮助您;你没有尝试过任何东西,也没有给出任何关于你解决这个问题的策略的线索。要做到这一点,有很多方法,首先进入我脑海的是暴力,另一种方法是询问家庭作业(1)注意你的学校政策:在这里寻求帮助可能构成作弊。(2) 指定问题是家庭作业。(3) 首先,真诚地尝试自己解决问题(在问题中包含代码)。(4) 询问现有实施中的具体问题;看见此外,还有关于提出家庭作业问题的指导。。这通常意味着,你需要的是与当地导师一起度过的时间,或是浏览教程,而不是堆栈溢出。最重要的是,每个教程都会教给你一系列相关的技术,而不仅仅是解决眼前的问题。特别是如果这是家庭作业,你很可能会得到零分,因为它会将所有算法工作转移到stdlib函数中。不用说,你不会学到上述libs背后的基础知识!您确定可以将
len()
与生成器一起使用吗?