我在Python翻转列表中的Python布尔值
mylist = [True , True, False,...]
一个布尔值列表,我想改变的逻辑相反[False, False, True , ...]
有一个内置的方式在Python做到这一点(有点像请拨打not(mylist)
)没有手写循环来反转元素?
我在Python翻转列表中的Python布尔值
mylist = [True , True, False,...]
一个布尔值列表,我想改变的逻辑相反[False, False, True , ...]
有一个内置的方式在Python做到这一点(有点像请拨打not(mylist)
)没有手写循环来反转元素?
它很容易与列表理解:
mylist = [True , True, False]
[not i for i in mylist]
产生
[False, False, True]
为什么不直接使用一个简单的列表理解?
mylist[:] = [not x for x in mylist]
>>> import operator
>>> mylist = [True , True, False]
>>> map(operator.not_, mylist)
[False, False, True]
我会做其他人的方式是说,而是用于记录替代的份上,你也可以做
import operator
myList = map(operator.not_, myList)
怎么样以下
>>> import numpy
>>> list(numpy.asarray(mylist)==False)
一元代数运算符(〜)将为numpy.ndarray执行此操作。因此:
>>> import numpy
>>> mylist = [True, True, False]
>>> ~numpy.array(mylist)
array([False, False, True], dtype=bool)
>>> list(~numpy.array(mylist))
[False, False, True]
请注意,翻转列表的元素将是numpy.bool_不是bool类型的元素。
Numpy明确包含此功能。函数 “numpy.logical_not(x [,out])”计算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(具有相同的实例)
实施例:
import numpy
mylist = [True , True, False]
print (mylist)
返回[TRUE,TRUE,FALSE]
mylist=numpy.logical_not(mylist)
print (mylist)
返回[假假真]
我是唯一一个不懂这个解释的单词吗? – DelightedD0D
Numpy正在为你做。我已经添加了一个例子。 –
只是好奇,是[:]必需品在这种情况下呐? – Levon
@Levon,'[:]'表示'mylist'仍然指向同一个列表。如果列表应该在函数内部发生变化,这可能是需要的。 –
@gnibbler但是列表理解正在创建一个新的列表,所以唯一的区别是使用[:] mylist的内存位置(id)不会改变,而不会改变它,它会? – Levon