我想要反转列表中的所有布尔值,如下所示:
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)
但它只给我一个假.
您可以使用列表推导和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)
你可以用列表理解来做到这一点:
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
| 归档时间: |
|
| 查看次数: |
2493 次 |
| 最近记录: |