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-尚未遇到切片表示法:)