尝试获取二进制数字列表,并显示他们的对立面,我将这个词放在引号中,因为我不确定它是否是描述内容的最佳方式我的意思是。
@available(iOS 10.0, *)
@IBAction func openURL(_ sender: Any) {
let openURL = URL(string: "https://www.facebook.com")
UIApplication.shared.open(openURL!, options: [:], completionHandler: nil)
}
我想制作一个能够显示这些数字相反的补充函数,如下所示:
board=[1,10,101]
基本上将0换成1,将1换成0.因为它们是整数,我无法遍历每个二进制数并手动更改值,我尝试使用两个恭维但是没有&从语义上做我试图做的事情。有谁知道如何做到这一点的功能,或者这个过程将被调用?谢谢!
答案 0 :(得分:0)
您能将二进制数表示为字符串吗?然后你可以简单地执行以下操作:
opposite = { '0':'1', '1':'0'}
board=['1', '10', '101']
newboard = [''.join([opposite[c] for c in n]) for n in board]
答案 1 :(得分:0)
你不能真正将[0,01,010]存储在列表中,因为它只是变为[0,1,10]你可以使用字符串
def reverse_binary(input):
reversed = []
for x in [list(str(x)) for x in input]:
reversed.append(''.join(['%s' % (int(x) ^ 1) for x in x]))
return reversed
if __name__ == '__main__':
print(reverse_binary([1, 10, 101]))
答案 2 :(得分:0)
你可以将所有的零交换为零,并将所有零交换为每个字符串中的零。为此,请对列表进行简单迭代,并为每个值创建一个交换1和0的新条目。为了执行交换,请替换' 1'使用从未使用过的值(例如' U'),分配' 0'到' 1'并指定临时值' U'到' 0'。
newboard = [a.replace('1','U').replace('0','1').replace('U','0') for a in board]
答案 3 :(得分:0)
我相信你所指的是补充数字;你试图翻转二进制数字的数字。自然要做的是使用XOR运算符。 请考虑以下代码:
get_bin = lambda x: format(x, 'b')
def Complement_binary(x):
complemented = []
for num in x:
i = 1
while i <= num:
i = i << 1
complemented.append(get_bin((i - 1) ^ num))
return complemented
Complement_binary
函数接收一个数字列表,并以字符串中的二进制表示形式返回数字列表(get_bin
将数字转换为字符串中的二进制数字)。如果您不想要字符串,可以删除get_bin
中的complemented.append(get_bin((i - 1) ^ num))
功能。
get_bin
函数的来源:@Martin Thoma的https://stackoverflow.com/a/21732313/6833761