Python:如何在 Python 中不使用循环来反转二进制字符串?

问题描述 投票:0回答:4

我正在开发一个项目,需要反转二进制字符串(即,将 0 更改为 1,将 1 更改为 0)。例如,如果输入是“0110010”,则输出应该是“1001101”。

出于性能原因,我正在寻找一种不使用 Python 循环(例如 for 或 while)的解决方案。我尝试过使用列表理解,但我想知道是否有更有效的方法来做到这一点。

这是我迄今为止尝试过的:

s = "0110010"
s = "".join('1' if bit == '0' else '0' for bit in s)
print(s)

Python 有没有更有效的方法来解决这个问题?

python string binary
4个回答
4
投票

使用交换的简单方法:

st = "0110010"
st=st.replace("0","a")
st=st.replace("1","0")
st=st.replace("a","1")
print (st)

3
投票

如何使用字符串 二进制文字执行此操作。

很简单,使用按位运算符。这是正确的方法,因为了解如何在 Python 中使用这些运算符很有用。如果这是一项任务,那么这似乎是设置任务的人希望完成的方式。

# Make binary literal (0b prefix)
b = 0b11001001
# And use the complement operator
print(~b)

#Or if you want to print out the binary, try
print(bin(~b))

以下是一些示例:

>>> ~0b110011
-52
>>> bin(~0b110001)
'-0b110010'
>>> bin(~0b11000)
'-0b11001'

如果你的二进制数是一个字符串:

s = "101"
# bin(~int(s,2)) = "010"

注意,如果您想要只是二进制字符,您可能需要修剪掉空格中的前三个字符,例如

bin(~int(s,2))[3:]

1
投票
''.join('1' if x == '0' else '0' for x in '0110010')

0
投票

这段代码适用于字符串,尝试一下:

>>> from string import maketrans
>>>
>>> initial_string = "10101010100011010"
>>> converted_string = initial_string.translate(maketrans("10","01"))

>>> converted_string    # The result is
'01010101011100101'
>>>
© www.soinside.com 2019 - 2024. All rights reserved.