我试图以字符串形式获取二进制数并翻转 1 和 0,即将字符串中的所有 1 更改为 0,并将所有 0 更改为 1。我是 Python 的新手,现在已经绞尽脑汁想弄明白几个小时了。
原文由 Just a Student 发布,翻译遵循 CC BY-SA 4.0 许可协议
我试图以字符串形式获取二进制数并翻转 1 和 0,即将字符串中的所有 1 更改为 0,并将所有 0 更改为 1。我是 Python 的新手,现在已经绞尽脑汁想弄明白几个小时了。
原文由 Just a Student 发布,翻译遵循 CC BY-SA 4.0 许可协议
>>> ''.join('1' if x == '0' else '0' for x in '1000110')
'0111001'
a for b in c
模式是一个 _生成器表达式_,它根据不同的系列生成一系列的项目。在这种情况下,原始系列是字符(因为您可以在 Python 中遍历字符串,它会为您提供构成该字符串的字符),而新系列是一组字符,其中 0 和 1 被翻转。
'1' if x == '0' else '0'
0
简单 - 它为我们提供了 1
x
我们对原始字符集中的每个这样的 x
执行此操作,然后 join()
它们全部在一起(带有一个空字符串 ''
,也就是什么都没有,介于两者之间每个项目),从而给我们一个最终的字符串,它是所有与原始相反的字符的组合。
原文由 Amber 发布,翻译遵循 CC BY-SA 2.5 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
Amber 的回答虽然更好,但可能不是最清楚的,所以这是一个超级基本的迭代示例:
这可以通过 更好的 方式来完成……替换,理解,但这是一个例子。
一旦你理解了这个问题的基础,我会从这个问题的其他答案中学习。这种方法缓慢而痛苦。为了获得 最佳 性能,正如 Muhammad Alkarouri 指出的那样,
string.translate
/maketrans
组合是要走的路。紧随其后的是领悟。我的代码是最慢的,差距很大。