说我有以下数组:
[True, True, True, True]
如何切换此数组中每个元素的状态?
切换会给我:
[False, False, False, False]
同样,如果我有:
[True, False, False, True]
切换会给我:
[False, True, True, False]
我知道在Python中切换布尔值最直接的方法是使用“not”,我在stackexchange上找到了一些例子,但我不知道如果它在一个数组中如何处理它。
答案 0 :(得分:10)
使用not
仍然是最好的方法。您只需要list comprehension即可:
>>> 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]
>>>
我很确定我的第一个解决方案是你想要的。但是,如果要更改原始数组,可以执行以下操作:
>>> x = [True, True, True, True]
>>> x[:] = [not y for y in x]
>>> x
[False, False, False, False]
>>>
答案 1 :(得分:2)
>>> a = [True, True, True, True]
>>> print map(lambda x: not x, a)
[False, False, False, False]
答案 2 :(得分:2)
在纯python中,具有列表推导
>>> x = [True, False, False, True]
>>> [not b for b in x]
[False, True, True, False]
或者,您可以考虑使用numpy数组来实现此功能:
>>> x = np.array(x)
>>> ~x
array([False, True, True, False], dtype=bool)