它是按位运算和二进制运算的组合

时间:2019-05-09 19:41:28

标签: python

我遇到了这个问题, 经过以下操作后a的值是什么?

a = (0100 == 0b10 ** 0x6) and ("mora" not in "thora")

这里的第一个括号是可以理解的,但是我不知道第二个括号是如何工作的?它会检查两个单词中的每个字母吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

"mora" in "thora"检查单词mora中是否包含整个单词thora。例如:

"mora" in "thora" -> False
"ora" in "thora"  -> True, because th-ora contains the whole "ora" word

添加not时,它会检查mora中是否没有thora

在您的情况下,("mora" not in "thora")返回True,因为单词thora不包含单词mora

答案 1 :(得分:1)

("mora" in "thora")

检查“ mora”是否为“ thora”中的子字符串

如此

("mora" not in "thora")

检查“ mora”是否不是“ thora”中的子字符串

答案 2 :(得分:1)

条件使用__contains__方法或“ dunder”包含魔术方法。此实现可能会因您的类型而异。 在此特定示例中,它将检查字符串mora中是否不包含字符串thora

以下是该运算符的其他一些例子,

Python 3.4.4 (default, Jul  9 2018, 09:26:46)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "book" in "books"
True
>>> 1 in [1, 2, 3, 4]
True
>>> 12 in [1, 2, 3, 4]
False
>>> 'a' in {1, 2, 3}
False
>>> 'foo' in {'foo': 'bar', 'bat': 'baz'}
True

您可以在自己的类中实现此功能。 here比较了这些操作针对不同数据类型的时间复杂度。