Python 遍历数组,查看非连续值 枚举(zip(analysisValues,analysisValues[1:],analysisValues[2:])中i,(x,y,z)的 如果全部(k

Python 遍历数组,查看非连续值 枚举(zip(analysisValues,analysisValues[1:],analysisValues[2:])中i,(x,y,z)的 如果全部(k,python,arrays,loops,compare,Python,Arrays,Loops,Compare,您可以使用扩展切片表示法,将步长值指定为SRate: for i,(x,y,z) in enumerate( zip(analysisValues, analysisValues[1:], analysisValues[2:]) ): if all(k<0.5 for k in (x,y,z)): instance = i break 您可以使用扩展切片表示法,将步长值指定为SRate: for i,(x,y,z) in enumerate( zi

您可以使用扩展切片表示法,将步长值指定为
SRate

for i,(x,y,z) in enumerate( zip(analysisValues, analysisValues[1:], analysisValues[2:]) ):
    if all(k<0.5 for k in (x,y,z)):
        instance = i
        break

您可以使用扩展切片表示法,将步长值指定为
SRate

for i,(x,y,z) in enumerate( zip(analysisValues, analysisValues[1:], analysisValues[2:]) ):
    if all(k<0.5 for k in (x,y,z)):
        instance = i
        break

让我们首先构造辅助生成器,它执行以下操作:

for i,(x,y,z) in enumerate(zip(analysisValues, \
                               analysisValues[SRate::SRate], \
                               analysisValues[2 * SRate::SRate])):
输出:

from itertools import izip, tee, ifilter

def sparsed_window(iterator, elements=2, step=1):
    its = tee(iterator, elements)
    for i,it in enumerate(its):
        for _ in range(i*step):
            next(it,None) # wind forward each iterator for the needed number of items

    return izip(*its)

print list(sparsed_window([1,2,3,4,5,6,7,8,9,10],3,2))
def find_instance(iterator, hz=1):
    iterated_in_sparsed_window = sparsed_window(iterator, elements=3, step=hz)
    fitting_values = ifilter(lambda (i,els): all(el<0.5 for el in els), enumerate(iterated_in_sparsed_window))
    i, first_fitting = next(fitting_values, (None,None))
    return i

print find_instance([1,0.4,1,0.4,1,0.4,1,0.4,1], hz=2)
这个助手避免我们在内存中创建几乎相同的列表。它只用于智能缓存所需的部分

助手代码基于

然后,我们可以使用此帮助器获得我们想要的:

>>> 
[(1, 3, 5), (2, 4, 6), (3, 5, 7), (4, 6, 8), (5, 7, 9), (6, 8, 10)]

让我们首先构造辅助生成器,它执行以下操作:

for i,(x,y,z) in enumerate(zip(analysisValues, \
                               analysisValues[SRate::SRate], \
                               analysisValues[2 * SRate::SRate])):
输出:

from itertools import izip, tee, ifilter

def sparsed_window(iterator, elements=2, step=1):
    its = tee(iterator, elements)
    for i,it in enumerate(its):
        for _ in range(i*step):
            next(it,None) # wind forward each iterator for the needed number of items

    return izip(*its)

print list(sparsed_window([1,2,3,4,5,6,7,8,9,10],3,2))
def find_instance(iterator, hz=1):
    iterated_in_sparsed_window = sparsed_window(iterator, elements=3, step=hz)
    fitting_values = ifilter(lambda (i,els): all(el<0.5 for el in els), enumerate(iterated_in_sparsed_window))
    i, first_fitting = next(fitting_values, (None,None))
    return i

print find_instance([1,0.4,1,0.4,1,0.4,1,0.4,1], hz=2)
这个助手避免我们在内存中创建几乎相同的列表。它只用于智能缓存所需的部分

助手代码基于

然后,我们可以使用此帮助器获得我们想要的:

>>> 
[(1, 3, 5), (2, 4, 6), (3, 5, 7), (4, 6, 8), (5, 7, 9), (6, 8, 10)]

感谢anwser-尚未遇到切片表示法:)感谢anwser-尚未遇到切片表示法:)