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
到我的结果集。