xf3n xf1 utf8 que ignorar coding codificacion cambiar acentos python operators

xf1 - El operador de tilde en Python



utf-8 python (3)

¿Cuál es el uso del operador de tilde en Python?

Una cosa en la que puedo pensar es hacer algo en ambos lados de una cadena o lista, como verificar si una cadena es palindrómica o no:

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

Cualquier otro buen uso?


Además de ser un operador de complemento bit a bit, ~ también puede ayudar a revertir un valor booleano , aunque aquí no es el tipo bool convencional, más bien debería usar numpy.bool_ .

Esto se explica en,

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

Revertir el valor lógico puede ser útil a veces, por ejemplo, debajo de ~ operador se usa para limpiar su conjunto de datos y devolverle una columna sin NaN.

from numpy import NaN import 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()]


Es un operador unario (tomando un solo argumento) que se toma prestado de C, donde todos los tipos de datos son simplemente formas diferentes de interpretar bytes. Es la operación "invertir" o "complementar", en la cual todos los bits de los datos de entrada se invierten.

En Python, para enteros, los bits de la representación del complemento de dos en dos se invierten (como en b <- b XOR 1 para cada bit individual) y el resultado se interpreta de nuevo como un entero de dos complementos. Entonces para enteros, ~x es equivalente a (-x) - 1 .

La forma reificada del operador ~ se proporciona como operator.invert . Para admitir este operador en su propia clase, dele un __invert__(self) .

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

Cualquier clase en la que sea significativo tener un "complemento" o "inverso" de una instancia que también sea una instancia de la misma clase es un posible candidato para el operador de inversión. Sin embargo, la sobrecarga del operador puede generar confusión si se utiliza incorrectamente, así que asegúrese de que realmente tenga sentido hacerlo antes de suministrar un método __invert__ a su clase. (Tenga en cuenta que byte-strings [ej .: ''/xff'' ] no son compatibles con este operador, aunque es significativo invertir todos los bits de una cadena de bytes).


~ es el operador de complemento bit a bit en python que esencialmente calcula -x - 1

Entonces una mesa se vería como

i ~i 0 -1 1 -2 2 -3 3 -4 4 -5 5 -6

Entonces para i = 0 se compararía s[0] con s[len(s) - 1] , para i = 1 , s[1] con s[len(s) - 2] .

En cuanto a su otra pregunta, esto puede ser útil para una gama de ataques a bitwise .