python не оператор со скобками

У меня есть простая логика, если оператор возвращает недопустимую синтаксическую ошибку. Заявление:

if (a[1] != None and a[2] != None and !(a[3] == None and a[4] == None)):

Недопустимый синтаксис - третий ! оператор. Любая причина, по которой это не сработает? Есть ли другой оператор, которого я должен использовать в этой ситуации?

Таким образом, логика по существу такова: a[1] ^ a[2] ^ (a[3] v a[4]) (где они обозначают наличие значений). Следовательно, обратная логика для получения значений None такова:

!a[1] ^ !a[2] ^ !(a[3] ^ a[4])

Я почти уверен, что моя логическая математика верна, так как же мне получить требуемый результат?

* Справочная информация: Python 2.7.10, общий код извлекает данные из таблицы SQL Server 2008, манипулирует ими, а затем вставляет их в другую таблицу, которая не допускает значений NULL, а исходная таблица завалена значениями NULL.

Спасибо за вашу помощь!


person Aaron Troeger    schedule 19.10.2015    source источник


Ответы (2)


Логический оператор «не» в python — это не !, а not.

Вы хотите:

if (a[1] != None and a[2] != None and not (a[3] == None and a[4] == None)):
person Gort the Robot    schedule 19.10.2015
comment
Да, это помогло. Спасибо за быстрый ответ. Приходится ждать 10 минут, чтобы принять значение.... - person Aaron Troeger; 19.10.2015
comment
Кстати, @shawn-mehan прав. Мое предложение было просто минимальным изменением, чтобы заставить его работать. - person Gort the Robot; 19.10.2015

Ну, стилистически при использовании None предпочтительнее использовать is и is not, а не == и !=, поэтому

if (a[1] is not None and a[2] is not None) and not (a[3] is None and a[4] is None):
person Shawn Mehan    schedule 19.10.2015