Pythonでブールリストを持っています
mylist = [True , True, False,...]
論理的な反対に変更したい要素を逆にする手書きのループなし[False, False, True , ...]
でPythonでこれを行う組み込みの方法( call のようなもの)はありますか?not(mylist)
Pythonでブールリストを持っています
mylist = [True , True, False,...]
論理的な反対に変更したい要素を逆にする手書きのループなし[False, False, True , ...]
でPythonでこれを行う組み込みの方法( call のようなもの)はありますか?not(mylist)
リスト内包表記を使えば簡単です:
mylist = [True , True, False]
[not elem for elem in mylist]
収量
[False, False, True]
単項チルダ演算子 (~) は、numpy.ndarray に対してこれを行います。そう:
>>> import numpy
>>> mylist = [True, True, False]
>>> ~numpy.array(mylist)
array([False, False, True], dtype=bool)
>>> list(~numpy.array(mylist))
[False, False, True]
反転されたリストの要素は、bool ではなく numpy.bool_ 型になることに注意してください。
>>> import operator
>>> mylist = [True , True, False]
>>> map(operator.not_, mylist)
[False, False, True]
Numpy にはこの機能が明示的に含まれています。関数 "numpy.logical_not(x[, out])" は、NOT x 要素ごとの真偽値を計算します。
import numpy
numpy.logical_not(mylist)
http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.logical_not.html (同じ例)
例:
import numpy
mylist = [True , True, False]
print (mylist)
[真、真、偽] を返します
mylist=numpy.logical_not(mylist)
print (mylist)
[False False True] を返します
単純なリスト内包表記を使用しないのはなぜですか?
mylist[:] = [not x for x in mylist]
私は他のみんなが言っているようにそれをしますが、代替案を文書化するために、あなたもすることができます
import operator
myList = map(operator.not_, myList)
以下はどうですか
>>> import numpy
>>> list(numpy.asarray(mylist)==False)