我有一个真假答案的列表,如下所示:
[True, True, True, False, False, True, False, False]
[True, True, False, False, True, False, False, True]
[True, False, False, True, False, False, True, True]
[False, False, True, False, False, True, True, True]
[False, True, False, False, True, True, True, False]
[True, False, False, True, True, True, False, False]
[False, False, True, True, True, False, False, True]
[False, True, True, True, False, False, True, False]
我想将True赋值为1,将False赋值为0,然后将该整体值转换为十六进制.
我该怎么做呢?我可以在列表中依次查看每个值,如果它等于’True’,则将该值更改为1,如果其’False’将值更改为0,或者是否有更简单的方法可以将整个列表直接更改为十六进制?
编辑:这是Pastebin上的完整代码:http://pastebin.com/1839NKCx
谢谢
最佳答案
lists = [
[True, True, True, False, False, True, False, False],
[True, True, False, False, True, False, False, True],
[True, False, False, True, False, False, True, True],
[False, False, True, False, False, True, True, True],
[False, True, False, False, True, True, True, False],
[True, False, False, True, True, True, False, False],
[False, False, True, True, True, False, False, True],
[False, True, True, True, False, False, True, False],
]
for l in lists:
zero_one = map(int, l) # convert True to 1, False to 0 using `int`
n = int(''.join(map(str, zero_one)), 2) # numbers to strings, join them
# convert to number (base 2)
print('{:02x}'.format(n)) # format them as hex string using `str.format`
输出:
e4
c9
93
27
4e
9c
39
72