2013-12-17 128 views
-1

我想拥有与appliedFieldOP2相同的读数。如果我的xValue [0] = 16000,我想从appliedFieldOP2中获得4。我怎样才能做到这一点?我试过使用len(xValue)但它不是一个数组。Python找到匹配的数组

appliedFieldOP = [18000,16000,15000,14000,12000,5000,-5000,-10000,5000,18000] 
appliedFieldOP2 = [2,4,6,8,10,12,14,16,18,20] 
x1 = 15000 
xValue = (filter(lambda x: x1+1000 >= x >= x1-1000, appliedFieldOP)) 
print xValue[0] 

结果:

xValue[0] >> 16000 

意味着,如果我的x值= 16000我的y值(appliedFieldOP2)必须等于4 如果x值= 12000 y值= 10。按照每个值的长度。我怎样才能做到这一点??

+0

能否请您解释一下什么是你想实现什么?什么是投入和预期产出?这个问题太模糊了,难以理解。 – aIKid

回答

2

而是保持两个单独的列表,保持2元组的列表和筛选:

tuple_list = zip(appliedFieldOP, appliedFieldOP2) 
filtered = filter(lambda x: x1+1000 >= x[0] >= x1-1000, tuple_list) 
+0

智能阅读!你很快就明白了...... – aIKid

+0

你应该在这里使用列表理解:'[op2 for op,op2 in zip(appliedFieldOP,appliedFieldOP2)if op-1000 <= x1 <= op + 1000]'而不是过滤器。 – Suor

+0

您也可以使用'next(seq,None)'从'filter'结果或生成器表达式中获取第一个值或'None'。 – Suor