如何在Python中切换布尔数组?

use*_*365 6 python arrays boolean toggle

说我有以下数组:

[True, True, True, True]
Run Code Online (Sandbox Code Playgroud)

如何切换此数组中每个元素的状态?

切换会给我:

[False, False, False, False]
Run Code Online (Sandbox Code Playgroud)

同样,如果我有:

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

切换会给我:

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

我知道在Python中切换布尔值最简单的方法是使用"not",我在stackexchange上找到了一些例子,但我不知道如果它在数组中如何处理它.

iCo*_*dez 10

使用not仍然是最好的方法.你只需要一个列表理解就可以了:

>>> x = [True, True, True, True]
>>> [not y for y in x]
[False, False, False, False]  
>>> x = [False, True, True, False]
>>> [not y for y in x]
[True, False, False, True]
>>>
Run Code Online (Sandbox Code Playgroud)

我很确定我的第一个解决方案是你想要的.但是,如果要更改原始数组,可以执行以下操作:

>>> x = [True, True, True, True]
>>> x[:] = [not y for y in x]
>>> x
[False, False, False, False]
>>>
Run Code Online (Sandbox Code Playgroud)

  • @ user2957365:请注意,这不会切换原始列表.它返回一个新列表. (4认同)