我想通过用LIGHTx命名的布尔变量来创建一些二进制信号系统。具有固定排序元素的Python布尔列表
LIGHT1 = True
LIGHT2 = True
LIGHT3 = False
LIGHT4 = False
接下来,我窝这些变量为未来计算的列表,
signal = [LIGHT1, LIGHT2, LIGHT3, LIGHT4]
目前我使用从Python: Boolean List to Binary String和Convert base-2 binary number string to int的理念转换的列表为int这是我的信号编号。在此,[1,1,0,0]装置12
In [97]: boolList2BinString(signal)
Out[97]: 12
我的问题是:
- 如何可以自动通过更新的光的值更新“信号”的元素,而不是一次又一次地运行
signal = [LIGHT1, LIGHT2, LIGHT3, LIGHT4]
? Whitch意味着,在我的其他代码中,我只需要运行LIGHTx = xxxx
和boolList2BinString(signal)
。 (也许某种方式像C++的指针?) - 如果对于问题1是不可能的,是否有任何方法可以修复列表中的LIGHT的顺序?
[更新]
请排除的方式,建立 'boolList2BinString' 功能内的 '信号' 列表中。
原文:
def boolList2BinString(lst):
return int('0b' + ''.join(['1' if x else '0' for x in lst]), 2)
大楼内:
def boolList2BinString():
osignal = [LIGHT1 , LIGHT2 , LIGHT3 , LIGHT4 ]
return int('0b' + ''.join(['1' if x else '0' for x in signal ]), 2)
提前感谢!