【发布时间】:2017-03-23 00:16:03
【问题描述】:
我正在尝试通过我用 LIGHTx 命名的布尔变量创建一些二进制信号系统。
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
我的问题是:
- 如何通过更新 LIGHT 的值来自动更新“信号”的元素,而不是一次又一次地运行
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)
提前致谢!
【问题讨论】: