当前位置: 首页 > 面试题库 >

Python中的代字号运算符

左丘阳晖
2023-03-14
问题内容

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

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

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

还有其他好的用法吗?


问题答案:

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

在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']不支持此运算符,即使将字节字符串的所有位取反也很有意义。)



 类似资料:
  • 问题内容: Python中的tilde运算符有什么用? 我能想到的一件事是在字符串或列表的两面都做一些事情,例如检查字符串是否为回文: 还有其他好的用法吗? 问题答案: 它是从C借来的一元运算符(采用单个参数),其中所有数据类型只是解释字节的不同方式。这是“取反”或“补码”操作,其中输入数据的所有位都取反。 在Python中,对于整数,该整数的二进制补码表示形式的位被颠倒(对于每个单独的位而言),

  • 有符号和无符号变量在按位运算上有区别吗?< br >例如,在处理无符号数字时:< br> 将得到00000101。 但当处理带符号的数字时会发生什么?

  • 问题内容: 什么是运营商吗?例如,以下操作做什么? 问题答案: 它是右移操作符,将所有位向右“移动”一次。 二进制10是 1010 移到右边变成 0101 这是5

  • 问题内容: 刚刚在下划线的来源中看到了这一点: 怎么办?我以前从未见过。 在开发人员中是否认为这是一种好习惯? 问题答案: 加号将字符串转换为浮点数。您提供的代码等效于以下代码:

  • 引用oracle网站“byte:字节数据类型是一个8位有符号二补码整数。它的最小值为-128,最大值为127(含)”。 在这里,前两行有效,但最后一行无效 Q1)8位有符号到底是什么意思?二进制格式的128将是1000 0000,-128需要一个额外的负号位,如果所有8位都被占用,它将适合。 Q2)对于int,有一个无符号右移运算符,但这对于字节似乎是非法的,为什么会这样。无法防止字节溢出。在in

  • 问题内容: 我正在使用pygame和box2d编写游戏引擎,并且在角色生成器中,我希望能够编写将在按键事件中执行的代码。 我的计划是在字符生成器中有一个文本编辑器,使您可以编写类似于以下内容的代码: 我将以字符串的形式检索文本编辑器的内容,并且我希望代码在此Character方法的方法中运行: 最好的方法是什么? 问题答案: 您可以使用该方法来执行此操作。 定义 该代码只是标准的Python代码-