gpt4 book ai didi

python - python列表中最长的连续重复序列

转载 作者:行者123 更新时间:2023-12-05 01:41:53 25 4
gpt4 key购买 nike

如前所述,一次运行是一系列连续的重复值。实现一个名为 longest_run 的 Python 函数,它接受一个数字列表并返回最长运行的长度。例如在序列中:2, 7, 4, 4, 2, 5, 2, 5, 10, 12, 5, 5, 5, 5, 6, 20, 1 最长的运行长度为 4。然后,大体上,您的程序应该要求用户输入列表,然后它应该调用 longest_run 函数,并打印结果。

这是我尝试过的方法,但它只返回 1,我不明白为什么。我无法为这个问题导入任何模块。

def longest_run(aList):
'''(list)->int
Returns length of the longest run
Precondition: aList is a list of a len of at least 2 and elements of list are ints
'''
count=0
bucket=[]
for i in aList:
if bucket==i:
count=count+1
else:
bucket=i
count=1
return count

最佳答案

您的代码最大的错误是将 bucket=[](这是一个列表)设置为整数。

此外,您还需要存储最长序列和当前序列长度(初始化为 1)和最后一次看到的值,因此比您存储的变量更多。

每次的值都和之前一样,增加counter。如果不同,在检查它是否不大于最大值后重置计数器。最后再次进行最大测试,以防最长序列在最后(经典错误)

像这样:

seq = [2, 7, 4, 4, 2, 5, 2, 5, 10, 12, 5, 5, 5, 5, 6, 20, 1]

result=1
max_result=0
last_seen=seq[0]

for v in seq[1:]:
if v==last_seen:
result += 1
else:
if result > max_result:
max_result = result
last_seen = v
result = 1

# just in case the longest sequence would be at the end of your list...
if result > max_result:
max_result = result

print(max_result)

当你最终被允许使用 python 电池时,使用 itertools.groupby 并计算序列长度的最大值:

max(sum(1 for x in v) for _,v in itertools.groupby(seq))

关于python - python列表中最长的连续重复序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com