gpt4 book ai didi

Python:查找列表中最小数字的最长序列的长度时输出不正确

转载 作者:行者123 更新时间:2023-11-28 21:34:22 25 4
gpt4 key购买 nike

我试图找到列表中最小数字的最长序列。例如,对于此列表,
resp_rates = [1,1,2,89,56,4,1,1,1,1,10,5,67,1,1,1,76,5,7,6,6,6,1,1 ,1,1,1,1,1]
,最小个数为1,1的序列长度分别为,2,4,3,7。所以,最长序列的长度是 7,但是,我的代码打印 4。

代码:

resp_rates = [1,1,2,89,56,4,1,1,1,1,10,5,67,1,1,1,76,5,7,6,6,6,1,1,1,1,1,1,1]
rr_min_current = np.amin(resp_rates)
print(rr_min_current)
count = 0
first = 1
min_rr_sequence = []
print(resp_rates)
for resp_rate in resp_rates:
if resp_rate == rr_min_current and first == 1:
count=count+1
first = 0
elif resp_rate == rr_min_current and first == 0:
count=count+1
elif resp_rate != rr_min_current and first == 0:
min_rr_sequence.append(count)
first = 1
count = 0
#longest_min_rr_sequence.append(np.amax(min_rr_sequence))
print(min_rr_sequence)
longest_min_rr_sequence = np.amax(min_rr_sequence)
print(longest_min_rr_sequence)

输出:

1
[1, 1, 2, 89, 56, 4, 1, 1, 1, 1, 10, 5, 67, 1, 1, 1, 76, 5, 7, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1]
[2, 4, 3]
4

最佳答案

使用groupby的简短解决方案:

from itertools import groupby

resp_rates = [1,1,2,89,56,4,1,1,1,1,10,5,67,1,1,1,76,5,7,6,6,6,1,1,1,1,1,1,1]

out = -min((value, -len(list(group))) for value, group in groupby(resp_rates))[1]
print(out)
# 7

一些解释:(value, -len(list(group))) for value, group in groupby(resp_rates)) 生成元组:(1, -2), (2, -1), ( 89, -1), ... (1, -4) ...

min将返回具有最小值的元组,如果许多元组具有相同的最小值,则返回具有最大长度的元组(因此使用-length 能够用 min 做到这一点。

我们只需保持最小元组的长度并更改其符号即可。

关于Python:查找列表中最小数字的最长序列的长度时输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53360831/

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