繁体   English   中英

Lambda function 以二进制翻转位(1 到 0 和 0 到 1)

[英]Lambda function to flip bits(1 to 0 and 0 to 1) in binary

我一直在解决hackerrank问题,目前在我应该将数字转换为二进制的问题中,反转每个数字。

假设有一个 integer n,我使用以下方法将其转换为二进制:

g = '{0:032b}'.format(n)

现在我已经使用正常的 for 循环反转了 0 和 1,但是,我想使用 lambda function 和/或单行 for 循环来做同样的事情。

我试过这样做:

f = [lambda x: x = '1' if x == '0' else x = '1']
res = [f(x) for x in g]    

res = [x = '1' for x in n if x == '0' else x = '0'] 

但我似乎没有正确理解语法。 另外,如果还有其他更好更短的方法,请不吝赐教。
任何帮助,将不胜感激!

你可以这样做,

In [1]: l = ["0", "1", "0", "0", "1"]
In [2]: f = lambda x: "1" if x == "0" else "0"
In [3]: [f(i) for i in l]
Out[3]: ['1', '0', '1', '1', '0']

分配 lambda 是一种不好的做法,您可以使用 function 本身。

In [4]: def f(x):
     ...:     if x == "0":
     ...:         return "1"
     ...:     else:
     ...:         return "0"

In [5]: [f(i) for i in l]
Out[5]: ['1', '0', '1', '1', '0']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM