将True和False答案的数组更改为十六进制值Python

我有一个真假答案的列表,如下所示:

[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
点赞