valores operadores operaciones logicas exclusivo declarar booleanos booleano booleanas binarios binarias python

operadores - Volteando los valores booleanos en una lista Python



valores booleanos y operaciones logicas (7)

¿Por qué no usar una simple lista de comprensión?

mylist[:] = [not x for x in mylist]

Tengo una lista booleana en Python

mylist = [True , True, False,...]

que quiero cambiar al opuesto lógico [False, False, True , ...] ¿Hay una forma incorporada de hacer esto en Python (algo así como una llamada not(mylist) ) sin un ciclo escrito a mano para invertir los elementos ?


¿Qué pasa con el siguiente

>>> import numpy >>> list(numpy.asarray(mylist)==False)


El operador de tilde único (~) hará esto para numpy.ndarray. Asi que:

>>> import numpy >>> mylist = [True, True, False] >>> ~numpy.array(mylist) array([False, False, True], dtype=bool) >>> list(~numpy.array(mylist)) [False, False, True]

Tenga en cuenta que los elementos de la lista volteada serán de tipo numpy.bool_ not bool.


Es fácil con la lista de comprensión:

mylist = [True , True, False] [not i for i in mylist]

rendimientos

[False, False, True]


Lo haría de la manera en que todo el mundo dice, pero para documentar las alternativas, también podrías hacer

import operator myList = map(operator.not_, myList)


Numpy incluye esta funcionalidad explícitamente. La función "numpy.logical_not (x [, out])" calcula el valor de verdad de NOT x element-wise.

import numpy numpy.logical_not(mylist)

http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.logical_not.html (con los mismos ejemplos)

Ejemplo:

import numpy mylist = [True , True, False] print (mylist)

devuelve [True, True, False]

mylist=numpy.logical_not(mylist) print (mylist)

devuelve [False False True]


>>> import operator >>> mylist = [True , True, False] >>> map(operator.not_, mylist) [False, False, True]