我有一个布尔字符串列表。每个字符串的长度为6.我需要得到每个字符串的补码。例如,如果字符串是“111111”,则预期“000000”。我的想法是
bin(~int(s,2))[-6:]
我认为这是正确的但不可读。它仅适用于长度小于30 的字符串。是否有更好和通用的方式来补充布尔字符串?
我用谷歌搜索了第三方包"bitstring"。但是,对我的代码来说太过分了。
答案 0 :(得分:6)
好吧,你基本上有一个字符串,你想要将所有的1改为0,反之亦然。我想我会忘记字符串的布尔含义,只需使用maketrans来制作翻译表:
from string import maketrans
complement_tt = maketrans('01', '10')
s = '001001'
s = s.translate(complement_tt) # It's now '110110'
答案 1 :(得分:1)
分三步替换:
>>> s = "111111"
>>> s.replace("1", "x").replace("0", "1").replace("x", "0")
'000000'