yxtiblin
@yxtiblin

Как работает бинарный оператор & в python?

Стали интересны бинарные операторы, но не до конца понимаю принцип их работы.
Если например выполнить команду
print( 60 & 13 )
то результат будет число 12, так как он сохранил и вывел совпадающие биты в этих числах, но если попробовать сделать так
var1 = {13}
var2= {60}
print( var1 & var2)

то результатом выполнения будет такой вывод в консоль
set()
Почему так происходит? А если попробовать сделать так
list1 = {12, 11, 60}
list2 = {11, 13, 34}
print( list1 & list2 )

то он вернет {11} - число которое имеется в обоих множествах. Как это работает?
  • Вопрос задан
  • 488 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Этот оператор может быть перегружен, а потому имеет разную семантику для разных типов данных.
Для множеств этот оператор возвращает их пересечение.
Ты можешь добавить поддержку этого оператора в свой класс, объявив магический метод __and__().
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Важно понять, что фигурные скобки - литерал множества. Вы сделали два множества и провели операцию & для двух множеств. Результат - множество, содержащее совпавшие элементы из обоих множеств.
В случае, когда вы сделали «число» И «число», у чисел в python способ логического И описан несколько по-другому, и результат другой.

В общем, вы можете сделать свой тип (класс) множеств, для которого переопределить эту и другие операции как вам хочется. По-умолчанию - так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы