Python 在列表/数组中发现一系列真值的最准确方法,忽略唯一的真值

Python 在列表/数组中发现一系列真值的最准确方法,忽略唯一的真值,python,python-3.x,Python,Python 3.x,基于应用于数据帧中变量的标准,我在列表中有一系列True/False值。感兴趣范围的索引是列表的一部分 其中有一系列真值(约15-25真值行)。列表中也有随机True值。请参见下面列表的突出部分。我需要提取True部分的开始和结束索引忽略唯一的True行。数据模式将始终保持不变,因此该程序将对我的其他数据集有效;尽管这并不重要,因为这个问题是针对下面的数据的 actual_data = [ True, True, False, False, False, False, False

基于应用于数据帧中变量的标准,我在列表中有一系列
True
/
False
值。感兴趣范围的索引是列表的一部分 其中有一系列真值(约15-25
真值
行)
。列表中也有随机
True
值。请参见下面列表的突出部分。我需要提取
True
部分的开始和结束索引忽略唯一的
True
行。
数据模式将始终保持不变,因此该程序将对我的其他数据集有效;尽管这并不重要,因为这个问题是针对下面的数据的

actual_data = [
        True, True, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, True, False, False,  

   True, True, True, True, True, True, True, True, True, True, 
   True, True, True, True, True, True, True, True, True, True, True, True,  

        False, False, False, False, False, False, False, True, False,
        False, True, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, True, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, False, False, False, False, False, False, False, False, False, False,
        False, True
    ]

因此,上面列表中的感兴趣部分是
实际数据[83:105]
。我需要一种方法来确定这个区域的起点和终点。

我将使用计数器并在枚举列表上循环。对于遇到的每个true,在计数器中添加1。对于每个false,检查计数器是否在特定范围内(例如15-25)。如果它在范围内,
计数器-索引
索引
将为您提供开始索引和结束索引。如果不在范围内,将计数器重置为0并继续循环

以下内容已使用您的数据进行了测试,并返回
(83105)
。做任何你想做的改变来适应你自己的需要。我建议添加所需的最小和最大范围作为附加参数,以获得更大的灵活性

def extract_range(my_list):
    counter = 0
    for index, value in enumerate(my_list):
        if value == True:
            counter += 1
        else:
            if 15 <= counter <= 25:
                return (index - counter, index)
            else:
                counter = 0
    return (-1, -1)
def提取范围(我的列表):
计数器=0
对于索引,枚举中的值(my_列表):
如果值==True:
计数器+=1
其他:

如果我能解释否决票的原因,那么我可以做适当的修改。我没有代码尝试。这不是我能想出的解决这个问题的办法。我想你投了反对票,因为没有代码尝试,因为这是一个相当基本的问题。不过,我提供了一个对你们应该有帮助的答案。我没有投反对票,但我相信你们应该更具体地说明你们的产出。你想要最长的序列吗?所有长度在15-25之间的?“我需要一种方法来确定这个区域的起点和终点”首先,你需要提出识别它的标准,这在这里是缺乏的。@JoshCaswell他给出了标准(15-25
True
一行中的值)和一个满足条件的示例(
实际数据[83:105]
)。当然也有差距,比如如果有多个区域符合给定的标准,该怎么办,但是对于一个简单的实现来说,有足够的指导。这给了我一个错误,
计数器+++
应该是
计数器+=1
对吧?是的,我在本地做了更改,但忘了在这里更新。抢手货