2014-09-10 24 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))