Как отменить все булевы в списке в python?

Я хочу изменить все мои булевы в списке следующим образом:

a=[True,False,True] 

к этому:

 b=[False,True,False] 

Я пытался

 not a 

Но это дает мне только ложь.

3 Solutions collect form web for “Как отменить все булевы в списке в python?”

Вы можете использовать список, а not все элементы

 a=[True,False,True] b=[not c for c in a] 

not a предоставлено False из-за того, что он проверяет список пустым, поскольку он не возвращает True, поэтому он преобразуется в false

 a=[True] not a False a=[False] not a True 

Вы можете сделать это со списком :

 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) 

где expression может содержать item

Причина, по которой ваша версия не работает, заключается в том, что она не может работать только с булевыми значениями и будет неявно преобразовывать все переданные ей в логические значения. Непустой список приводит к True и применяется не к тому, что дает вам False

Вы можете map оператор not как функцию для каждого элемента. И обязательно import operator :

 map(operator.not_, [True, False, True]) # apply the not unary operator to each list item 
Python - лучший язык программирования в мире.