Как отменить все булевы в списке в 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
  • Прочитайте файл .txt и поместите элементы в список (Python)
  • Средний -Питон
  • Python: как найти дубликаты в списке и обновить эти повторяющиеся элементы, переименовав их с добавлением прогрессивного письма
  • Если в Python я помещаю список внутри кортежа, могу ли я безопасно изменить содержимое этого списка?
  • Передача списка при сохранении оригинала
  • Pythonic способ разбить список после элементов, для которых данный предикат является истинным
  • сгладить список списков через понимание списка
  • Python - лучший язык программирования в мире.