清洁实施“决策矩阵”

时间:2013-11-11 09:34:41

标签: python matrix

我正在尝试找到一个干净的解决方案来实现python中的基本决策矩阵。我有8个传感器监控安装,根据这8个传感器的状态,我需要激活一些继电器。

我的决策矩阵看起来像(S是传感器,R是R):

S1   S2   S3   S4   S5   S6   S7   S8   R1   R2   R3
0    1    0    0    1    1    0    1    0    0    1
1    0    1    0    0    1    1    0    1    1    1
0    1    1    1    0    0    0    1    0    1    0
...

目前我看到的唯一一个实现,就是我的descision矩阵的每一行的if / elif语句套件,如:

if S1==0 and S2==1 and S3==0 and S4==0 and S5==1 and S6==1 and S7==0 and S8==1:
    relay_state('R1', 0)
    relay_state('R2', 0)
    relay_state('R3', 1)
elif ...

这肯定有用,但我想知道是否有更清洁的方法来实现这个?

2 个答案:

答案 0 :(得分:7)

你可以使用元组字典

matrix = {
   (0,1,0,0,1,1,0,1):(0,0,1),
   (1,0,1,0,0,1,1,0):(1,1,1),
   (0,1,1,1,0,0,0,1):(0,1,0),

}
S1,S2,S3,S4,S5,S6,S7,S8 = 0,1,0,0,1,1,0,1
R1,R2,R3=matrix[S1,S2,S3,S4,S5,S6,S7,S8]
print (R1,R2,R3)

$python test.py
(0, 0, 1)

答案 1 :(得分:1)

使用列表和比较列表:

if sensors == [0,1,0,1, ....]:

更有效的符号 - 如果您的处理程序是函数,您可以使用字典

decision_matrix = { (0,1,1,... ): some_handler, ... }
...
decision_matrix[sensors]()