如何在python中反转列表中的所有布尔值?

Iva*_*kov 0 python list

我想要反转列表中的所有布尔值,如下所示:

a=[True,False,True]
Run Code Online (Sandbox Code Playgroud)

对此:

b=[False,True,False]
Run Code Online (Sandbox Code Playgroud)

我试过了

not a
Run Code Online (Sandbox Code Playgroud)

但它只给我一个假.

The*_*nse 6

您可以使用列表推导和not所有项目

a=[True,False,True] 
b=[not c for c in a]
Run Code Online (Sandbox Code Playgroud)

not a 由于检查列表为空而提供False,因为它不返回True,因此它被转换为false

a=[True]
not a
False
a=[False]
not a
True
Run Code Online (Sandbox Code Playgroud)


ove*_*tor 5

你可以用列表理解来做到这一点:

a = [True, False, True]
b = [not bool for bool in a]
Run Code Online (Sandbox Code Playgroud)

这基本上类似于:

a = [True, False, True]
b = []
for bool in a:
    b.append(not bool)
Run Code Online (Sandbox Code Playgroud)

或更一般地说:

new_list = [expression for item in a_list]
Run Code Online (Sandbox Code Playgroud)

本质上是一样的:

new_list = []
for item in a_list:
    new_list.append(expression)
Run Code Online (Sandbox Code Playgroud)

哪里expression可以包含item

您的版本不起作用的原因是 not 只能对布尔值进行操作,并且会将传递给它的任何内容隐式转换为布尔值。一个非空列表导致True并且不应用于它给你False