Test Array = [1, 2, 3, 1, 0.4, 1, 0.1, 0.4, 0.3, 1, 2]


我需要遍历一个数组,以便第一次找到3个连续条目小于0.5的情况,并返回此事件的索引。

Test Array = [1, 2, 3, 1, 0.4, 1, 0.1, 0.4, 0.3, 1, 2]
                           ^       ^    ^    ^
(indices)    [0, 1, 2, 3,  4,  5,  6,   7,   8,  9, 10]
                                   ^


因此,在此测试数组中,要查找的索引/值是6

除了提出的解决方案外,如果不满足“ 3个连续值
(如果不满足条件,我希望返回值为0)

最佳答案

您可以使用zipenumerate

def solve(lis, num):
    for i, (x,y,z) in enumerate(zip(lis, lis[1:], lis[2:])):
        if all(k < num for k in (x,y,z)):
            return i
    #default return value if none of the items matched the condition
    return -1    #or use None
...

>>> lis = [1, 2, 3, 1, 0.4, 1, 0.1, 0.4, 0.3, 1, 2]
>>> solve(lis, 0.5)
6
>>> solve(lis, 4)   # for values >3 the answer is index 0,
0                   # so 0 shouldn't be the default  return value.
>>> solve(lis, .1)
-1


itertools.izip用于内存有效的解决方案。

关于python - 遍历数组,查看多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17317928/

10-12 19:30