2014-09-10 49 views
-1

檢查我有2所列出:上執行列表

main_voltages = [5.5, 15.7, 28.5] 
limit_list = [[5,10], [15,20], [25,30]] 

我必須進行檢查,以查看是否5.5是在5至10的範圍內,如果15.7是在15至20範圍和28.5是範圍爲25到30. 我應該如何使它不發生任何硬編碼?我對一些功能進行了許多思考,但無法得到確切的方法。

回答

2

這是使用zip()一個辦法:

>>> main_voltages = [5.5, 15.7, 28.5] 
>>> limit_list = [[5,10], [15,20], [25,30]] 
>>> result = [b[0] <= a <= b[1] for (a, b) in zip(main_voltages, limit_list)] 
>>> result 
[True, True, True] 

或者作爲@ovgolovin指出的那樣,你可以解壓在limit_list的元素,並做:

result = [a <= value <= b for (value, (a, b)) in zip(main_voltages, limit_list)] 
+0

1雖然我將解壓B中孔(結果= [B [0] <= A <= B [1](A​​,B)在拉鍊意爲' (main_voltages,limit_list)]' - >'result = [a <= value <= b for(value,(a,b))in zip(main_voltages,limit_list)]') – ovgolovin 2014-09-10 18:44:11

+0

@ovgolovin同意。 – shaktimaan 2014-09-10 18:52:25

+0

@shaktimaan很酷..謝謝 – tryPy 2014-09-10 22:09:39

0

您可以使用enumerateall到檢查每個ele中的main_voltages是否在limit_list[ind][0]limit_list[ind][1]的範圍內,其對應於element 0element 1limit_list每個子列表:

all(limit_list[ind][0] <= ele <= limit_list[ind][3] for ind,ele in enumerate(main_voltages))