78

Pythonでブールリストを持っています

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

論理的な反対に変更したい要素を逆にする手書きのループなし[False, False, True , ...] でPythonでこれを行う組み込みの方法( call のようなもの)はありますか?not(mylist)

4

8 に答える 8

101

リスト内包表記を使えば簡単です:

mylist  = [True , True, False]

[not elem for elem in mylist]

収量

[False, False, True]
于 2012-05-21T00:43:52.057 に答える
46

単項チルダ演算子 (~) は、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_ 型になることに注意してください。

于 2014-10-03T21:22:28.013 に答える
15
>>> import operator
>>> mylist  = [True , True, False]
>>> map(operator.not_, mylist)
[False, False, True]
于 2012-05-21T00:48:36.643 に答える
12

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] を返します

于 2016-02-01T09:47:56.663 に答える
7

単純なリスト内包表記を使用しないのはなぜですか?

mylist[:] = [not x for x in mylist]
于 2012-05-21T00:44:06.457 に答える
6

私は他のみんなが言っているようにそれをしますが、代替案を文書化するために、あなたもすることができます

import operator
myList = map(operator.not_, myList)
于 2012-05-21T00:49:24.257 に答える
3

以下はどうですか

>>> import numpy
>>> list(numpy.asarray(mylist)==False)
于 2013-07-30T08:16:34.223 に答える