猿问

Python中的tilde运算符

Python中的tilde运算符

在Python中,tilde操作符的用法是什么?

我可以考虑的一件事是在字符串或列表的两边做一些事情,比如检查一个字符串是否是回文的:

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

还有其他好的用法吗?


慕后森
浏览 564回答 3
3回答

慕桂英3389331

它是从C中借用的一元操作符(使用单个参数),其中所有数据类型只是解释字节的不同方式。它是“反向”或“补充”操作,其中输入数据的所有位元都是反向的。在Python中,对于整数,二补表示的整数被反转(如b <- b XOR 1(对于每个单独的位),结果再次解释为两个补整数。所以对于整数,~x等于(-x) - 1.具体化的形式~操作符为operator.invert..若要在您自己的类中支持此运算符,请将__invert__(self)方法。>>>&nbsp;import&nbsp;operator>>>&nbsp;class&nbsp;Foo:...&nbsp;&nbsp;&nbsp;def&nbsp;__invert__(self):...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'invert'...>>>&nbsp;x&nbsp;=&nbsp;Foo()>>>&nbsp;operator.invert(x)invert>>>&nbsp;~x invert如果有一个实例的“补语”或“逆”(也是同一类的实例)是有意义的,那么任何类都可能是反演运算符的候选对象。但是,如果使用不当,运算符重载可能会导致混淆,因此,请确保在提供__invert__方法到您的班级。(请注意字节-字符串[ex:'\xff']不支持这个操作符,即使反转字节字符串的所有位也是有意义的。)

慕容3067478

~是位补算子在python中,它从本质上计算-x - 1所以一张桌子看起来就像i&nbsp;&nbsp;~i&nbsp;&nbsp; 0&nbsp;&nbsp;-11&nbsp;&nbsp;-22&nbsp;&nbsp;-33&nbsp;&nbsp;-4&nbsp;4&nbsp;&nbsp;-5&nbsp;5&nbsp;&nbsp;-6所以为了i = 0它会比较s[0]带着s[len(s) - 1],为i = 1,&nbsp;s[1]带着s[len(s) - 2].至于您的另一个问题,这对于一系列的按位黑客.

MYYA

除了是位补运算符,~还可以帮助还原布尔型价值,尽管它不是传统的bool在这里键入,而应该使用numpy.bool_.这是解释在,import&nbsp;numpy&nbsp;as&nbsp;npassert&nbsp;~np.True_&nbsp;==&nbsp;np.False_反转逻辑值有时是有用的,例如,下面~运算符用于清除数据集,并在不带NaN的情况下返回列。from&nbsp;numpy&nbsp;import&nbsp;NaNimport&nbsp;pandas&nbsp;as&nbsp;pd matrix&nbsp;=&nbsp;pd.DataFrame([1,2,3,4,NaN],&nbsp;columns=['Number'],&nbsp;dtype='float64')#&nbsp;Remove&nbsp;NaN&nbsp;in&nbsp;column&nbsp;'Number'matrix['Number'][~matrix['Number'].isnull()]
随时随地看视频慕课网APP

相关分类

Python
我要回答