python - 在列表/数组中发现一系列真值的最准确方法,忽略唯一的真值
问题描述
基于应用于数据框中变量的标准,我在列表中有一系列True
/False
值。感兴趣范围的索引是列表中存在一系列真实值的部分(大约 15-25True
个值连续) . 列表中也有随机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
]
所以感兴趣的列表部分在上面的列表中是actual_data[83:105]
。我需要一种方法来发现该区域的起点和终点。
解决方案
我会使用一个计数器并遍历枚举列表。对于遇到的每个 true,计数器加 1。对于每个 false,检查计数器是否在某个范围内(例如 15-25)。如果它在范围内,counter - index
并且index
会为您提供开始和结束索引。如果不在范围内,则将计数器重置为 0 并继续循环。
以下已用您的数据和回报进行了测试(83, 105)
。进行任何更改以使其适合您自己的需要。我建议添加所需的最小和最大范围作为附加参数以获得更大的灵活性。
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)
推荐阅读
- google-apps-script - 使用带有工作表的 Google Scripts 发送有关单元格更改的电子邮件
- python - Librosa 波形图在 X 轴上显示错误的时间
- javascript - this.getAttribute('attribute') 即使属性显示在 this.attributes 中也返回 null
- c# - 任务异步/等待...不明白
- flutter - 颤动谷歌登录
- html - 在 Node.js 中使用 eval/Function/new Function 创建 HTML 模板引擎是否有效且安全?
- oracle - 有没有办法将多个表从 Hadoop 传输到 Oracle?
- tcp - TCP stream.read 套接字异常
- python - Python中max()函数的实现
- database - 当数据库名称包含环境前缀时,如何在 Snowflake 的视图中连接两个表,每个表来自不同的数据库