Python中的代字号运算符

发布于 2021-02-02 23:12:48

Python中的tilde运算符有什么用?

我能想到的一件事是在字符串或列表的两面都做一些事情,例如检查字符串是否回文:

def is_palindromic(s):
    return all(s[i] == s[~i] for i in range(len(s) / 2)) 

还有其他好的用法吗?

关注者
0
被浏览
58
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    它是从C借来的一元运算符(采用单个参数),其中所有数据类型只是解释字节的不同方式。这是“取反”或“补码”操作,其中输入数据的所有位都取反。

    在Python中,对于整数,该整数的二进制补码表示形式的位被反转(b <- b XOR 1对于每个单独的位而言),并且结果再次解释为二进制补码整数。因此对于整数,~x等于(-x) - 1

    ~运算符的形式化形式为operator.invert。要在你自己的类中支持此运算符,请为其提供一个__invert__(self)方法。

    >>> import operator
    >>> class Foo:
    ...   def __invert__(self):
    ...     print 'invert'
    ...
    >>> x = Foo()
    >>> operator.invert(x)
    invert
    >>> ~x
    invert
    

    对于具有相同类实例的实例的“补码”或“逆”有意义的任何类,都可以用作反转运算符。但是,如果使用不当,运算符重载会导致混乱,因此请确保在向__invert__类提供方法之前这样做确实有意义。(请注意,字节字符串[ex:'\xff']不支持此运算符,即使将字节字符串的所有位取反也很有意义。)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看