Python 查找列表中无序元素的有效方法

Python 查找列表中无序元素的有效方法,python,python-3.x,Python,Python 3.x,根据这份清单 [True, False, True, True, False, True, False, False] 我想找到该列表中所有False混合在True元素之间的元素。意思是: [True, True, True, True, True, False, False, False] 不会产生任何结果,上面的列表应该会产生: [1, 4] 我目前正在写一个循环,试图记住该列表向后移动的状态,但我认为可能有更有效的方法。实际上并不需要索引本身,因为我实际上是在添加列表中唯一的元素 #

根据这份清单

[True, False, True, True, False, True, False, False]
我想找到该列表中所有
False
混合在
True
元素之间的元素。意思是:

[True, True, True, True, True, False, False, False]
不会产生任何结果,上面的列表应该会产生:

[1, 4]
我目前正在写一个循环,试图记住该列表向后移动的状态,但我认为可能有更有效的方法。实际上并不需要索引本身,因为我实际上是在添加列表中唯一的元素

# zip both the array to create a tuple & yield those.
for index, (n, m) in enumerate(zip([True, False, True, False],
                                   [True, True, True, True])):
    if n != m:
        print(index)
输出

(1,3)

也许你可以这样做

test = [True, False, True, True, False, True, False, False]

start = None
found = None
end = None

for i in range(len(test)):
    if test[i] is False:
        if start is None:
            start = i
        else:
            found = i
    elif found is not None:
        end = found

if start is not None and end is not None:
    print(start)
    print(end)
#创建列表
李=[真,假,真,真,假,真,假,假,假]
#从前面迭代直到第一个真值,并删除所有假值
对于我在李:
如果不是我:li.pop()
如果我:休息
#Out:[真,假,真,真,假,真,假,假,假]
#从后面迭代直到第一个真值,并删除所有假值
对于反向中的i(li):
印刷品(一)
如果我:休息
如果不是我:li.pop()
#Out:[真,假,真,真,假,真]
#查找剩余假值的索引
[i代表i,枚举中的x(li)如果不是x]
#输出:[1,4]

是否应该
[T,F,F,T]
返回
[1,2]
?@MichaelBianconi YesCan您可以添加一些关于这是如何进行有趣测试的注释,因此即使我对索引不感兴趣,我也可以删除
枚举
,仍然进行比较并添加结果
,如果n!=m
到我的结果集。