Автор оригинала: Chris.
Вы можете уже знать Python и оператор при обращении к двум лосям:
>>> True and False False >>> True and True True
Достаточно просто. Тем не менее, это не вся история: вы можете использовать и
Оператор даже на сложных типах данных, таких как списки или пользовательские объекты. Так что вы можете спросить (и правильно):
Что делать, если вы применяете и оператор к двум объектам?
Чтобы понять вывод, вы должны понимать две вещи:
- Как
и
Работа оператора? - Какова ценность правды любого объекта – например, список?
Давайте быстро ответим на эти два вопроса.
Как то а также Работа оператора?
Давайте начнем с Официальная документация Для логических операторов:
Эксплуатация | Определения |
X или Y. | Если x ложный, то y, еще х |
х и y | Если х неверно, то x, еще y |
не х | Если x ложный, то правда, иначе ложь |
Вы должны понимать более глубокое значение этих определений: все они являются короткими цепью, что означает, что, как только условие будет полнее, они будут прервать дальнейшую обработку.
В х и у
Операция, если значение х
оценивается до Правда
Python просто возвращает значение y
Отказ Это даже не смотрит на то, что ценность уход
на самом деле это Отказ Если вы используете логические операторы х
и уход
это ожидаемое поведение, потому что если х
это Правда
Тогда y
Определяет ли х
и y
это Правда
Отказ
Это приводит к интересному поведению: если х
и y
являются объектами, результатом операции х и у
Будет объектом тоже! (А не логическое значение.)
В сочетании с следующим куском знаний Python это приводит к интересному поведению:
Какова ценность правды любого объекта – например, список?
Python Convention Просто: если объект «пустой», значение правды является Ложь
Отказ В противном случае это Правда
. Таким образом, пустой список, пустая строка или 0 целое значение – все Ложь
Отказ Большинство других ценностей будут Правда
Отказ
Теперь вы оснащены основами, чтобы понять ответ на следующий вопрос:
Что делать, если вы применяете и оператор к двум объектам?
Скажем, у вас есть два не булевых объекта x
и уход
. Какой результат операции х и у
?
Ответ прост: результат – y
Если х
не пусто (и, таким образом, оценивает на True
).
Что делать, если вы примените и оператор в два списка?
Вот пример для двух объектов списка:
>>> [1, 2, 3] and [0, 0, 0, 0] [0, 0, 0, 0]
Первый аргумент и
Операция не пустая и оценивает Правда
Отказ Поэтому результатом операции является аргумент второго списка [0, 0, 0, 0]
.
Но что, если первый аргумент пуст?
>>> [] and [0, 0, 0, 0] []
Результатом является первым аргументом (а не логическое значение Ложь
). Если вы сомневаетесь, почему консультируйтесь с вышеуказанным определением снова:
х и у
: Если х неверно, то x, еще y
Резюме
Вы узнали, что и
Оператор возвращает первый операнд, если он оценивает Ложь
, в противном случае второй операнд.
Вы также узнали, что вы можете использовать и
Оператор даже для не-булевых типов, в котором результат будет объектом, а не логическое значение.
Наконец, вы также узнали, что пустой объект обычно оценивает Ложь
Отказ
Если вы обнаружите это интересно, не стесняйтесь проверить мою предстоящую книгу Python, которая показывает вам сотни маленьких трюков Python, как этот:
Python One-вкладыши [без крахмала пресса]
Получите свою книгу!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Оригинал: “https://blog.finxter.com/python-and-operator-on-two-objects-or-lists-whats-the-result/”