首页 > 解决方案 > 如何检测值高于某个阈值的连续子列表?

问题描述

我有非常基本的编程技能。我的问题是如何检测给定列表的连续子列表,以使子列表的所有成员都高于某个阈值。列表中可能有多个这样的子列表。例如,我们有一个名为 list1 的列表,如下所示:

list1 =  [5, 10, 9, 11, 22, 19, 23, 2, 2, -1, 1, 4, 5, 19, 20, 40, 32, 34, 7, 3, -2, 4, 5 , 7 , 22, 23, 24, 35]

我希望能够检测到 18 以上的子列表并检索该子列表中返回其索引的最小值。list1在: [22, 19, 23][19, 20, 40, 32, 34]和中有 3 个这样的子列表[22, 23, 24, 25]。因此,我正在寻找的结果是[5, 13, 24]每个子列表中最小值的索引。有什么简单的方法可以做到这一点吗?

标签: pythonpython-3.x

解决方案


如果我正确理解您正在寻找的内容,这应该可以解决问题。我们的想法是遍历我们的列表并制作小于 18 的数字的较小列表(templist),然后一旦我们找到一个不大于 18 的数字,我们就知道我们已经完成了添加到这个子列表并可以检查最小值,并且得到它的索引。我只是将内容打印出来,但您可以通过一些小改动轻松保存信息。

list1 = [5, 10, 9, 11, 22, 19, 23, 2, 2, -1, 1, 4, 5, 19, 20, 40, 32, 34, 7, 3, -2, 4, 5 , 7 , 22, 23, 24, 35]
templist = []
for i,l in enumerate(list1):
    if(l > 18):
        templist.append(l)
    else:
        if len(templist) > 0:
            print(i-len(templist)+templist.index(min(templist)),min(templist))
            templist = []
if len(templist) > 0:
    print(i-len(templist)+templist.index(min(templist)),min(templist))
    templist = []

推荐阅读