Python 如何向变量追加\联接二进制数字

Python 如何向变量追加\联接二进制数字,python,python-2.7,Python,Python 2.7,在python中,如何将二进制数字附加到最后一个变量 a = self.allcheckboxes[0].isChecked() # 1 b = self.allcheckboxes[1].isChecked() # 0 c = self.allcheckboxes[2].isChecked() # 1 d = self.allcheckboxes[3].isChecked() # 0 final_value = 010+a+b+c+d # iam expecting something li

在python中,如何将二进制数字附加到最后一个变量

a = self.allcheckboxes[0].isChecked() # 1
b = self.allcheckboxes[1].isChecked() # 0
c = self.allcheckboxes[2].isChecked() # 1
d = self.allcheckboxes[3].isChecked() # 0

final_value = 010+a+b+c+d
# iam expecting something like 0101010 in binary 

您可以在
map
函数中使用
operator.itemgetter
operator.attrgetter
来执行一行中的所有代码,并使用
str.join()
来连接结果:

from operator import itemgetter,attrgetter
''.join(map(attrgetter('isChecked'),itemgetter(0,1,2,3)(self.allcheckboxes)))
还要注意的是,python中没有二进制类型,当您获得连接的字符串时,根据您的目标和您正在拨号的函数,您可以将该字符串作为二进制数处理

例如,如果要将其转换为整数,可以使用
int
函数,将2作为基数:


我假设您只需要一个看起来像二进制的字符串,而不是一个设置了相关位的整数,如果这样,您可以使用以下复选框10到14:

final_value = ''.join('1' if checkbox.isChecked() else '0' for checkbox in self.allcheckboxes[10:15])
如果需要,可以将其转换为整数并打印为十六进制,如下所示:

integer_value = int(final_value, 2)
print '{:x}'.format(integer_value)

我有26个复选框,但我只想要来自自身的值。所有复选框[10-14],如何更改它?FWIW,我想条件表达式更可读,但
'01'[checkbox.isChecked()]
更短。)这对我很有帮助,现在我可以使用
print hex(fianl_value)
将其转换回十六进制吗?您只需将其保留为整数值,然后就可以使用
format
以十六进制格式显示整数。我已经更新了答案来说明这一点。@SaiGanesh:使用格式比使用
hex()
提供了更多的控制。您可以选择是否需要前导的
0x
。如果在格式字符串中使用大写字母“X”,则大于9的“数字”将使用大写字母。
integer_value = int(final_value, 2)
print '{:x}'.format(integer_value)