如何在python中反转列表中的所有布尔值?
我想反转列表中的所有布尔值,如下所示:如何在python中反转列表中的所有布尔值?,python,list,Python,List,我想反转列表中的所有布尔值,如下所示: a=[True,False,True] 为此: b=[False,True,False] 我试过了 not a 但是它只给了我假。你可以使用列表理解和而不是所有的项目 a=[True,False,True] b=[not c for c in a] 不是一个提供的False,因为它检查列表是空的,因为它不返回True,所以它被转换为False a=[True] not a False a=[False] not a True 您可以将not操作
a=[True,False,True]
为此:
b=[False,True,False]
我试过了
not a
但是它只给了我假。你可以使用列表理解和
而不是所有的项目
a=[True,False,True]
b=[not c for c in a]
不是一个
提供的False,因为它检查列表是空的,因为它不返回True,所以它被转换为False
a=[True]
not a
False
a=[False]
not a
True
您可以将not
操作符作为函数映射到每个项目。还要确保导入操作员
:
map(operator.not_, [True, False, True]) # apply the not unary operator to each list item
您可以使用:
a = [True, False, True]
b = [not bool for bool in a]
这基本上类似于:
a = [True, False, True]
b = []
for bool in a:
b.append(not bool)
或者更一般地说:
new_list = [expression for item in a_list]
基本上与以下内容相同:
new_list = []
for item in a_list:
new_list.append(expression)
其中表达式
可以包含项
您的版本无法运行的原因是,not只能对布尔值进行操作,并且会隐式地将传递给它的任何内容转换为布尔值。不适用于这一点会给你带来False
非常感谢!很好用<代码>非a
被解释为非布尔(a)
,而布尔(a)
是真的
,因为a
不是空的(请参阅)。请注意,如果a
是numpy
数组而不是列表,则可以使用b=~a
。