为了账号安全,请及时绑定邮箱和手机立即绑定

Python中的tilde运算符

Python中的tilde运算符

慕后森 2019-07-27 19:15:25
Python中的tilde运算符在Python中,tilde操作符的用法是什么?我可以考虑的一件事是在字符串或列表的两边做一些事情,比如检查一个字符串是否是回文的:def is_palindromic(s):     return all(s[i] == s[~i] for i in range(len(s) / 2))还有其他好的用法吗?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

它是从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']不支持这个操作符,即使反转字节字符串的所有位也是有意义的。)



查看完整回答
反对 回复 2019-07-28
?
慕容3067478

TA贡献1773条经验 获得超3个赞

~位补算子在python中,它从本质上计算-x - 1

所以一张桌子看起来就像

i  ~i  
0  -11  -22  -33  -4 4  -5 5  -6

所以为了i = 0它会比较s[0]带着s[len(s) - 1],为i = 1s[1]带着s[len(s) - 2].

至于您的另一个问题,这对于一系列的按位黑客.




查看完整回答
反对 回复 2019-07-28
?
MYYA

TA贡献1868条经验 获得超4个赞

除了是位补运算符,~还可以帮助还原布尔型价值,尽管它不是传统的bool在这里键入,而应该使用numpy.bool_.


这是解释在,

import numpy as npassert ~np.True_ == np.False_

反转逻辑值有时是有用的,例如,下面~运算符用于清除数据集,并在不带NaN的情况下返回列。

from numpy import NaNimport pandas as pd

matrix = pd.DataFrame([1,2,3,4,NaN], columns=['Number'], dtype='float64')# Remove NaN in column 'Number'matrix['Number'][~matrix['Number'].isnull()]




查看完整回答
反对 回复 2019-07-28
  • 3 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信