2013-12-17 87 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