Вопрос: Поведение «и» с наборами в Python


Я знаю, что если я хочу получить пересечение двух наборов (или фризонов), я должен использовать амперсанд &, Из любопытства я попытался использовать слово «и»,

a = set([1,2,3])
b = set([3,4,5])
print(a and b) #prints set([3,4,5])

Мне просто интересно, почему? что делает это and при использовании со списками?


8


источник


Ответы:


x and y просто лечит целое x а также y выражения в виде булевых значений. Если x false, он возвращает x, В противном случае возвращается y, Видеть документы  для деталей.

И то и другое sets (как в вашем примере) и lists (как в вашем вопросе) являются ложными тогда и только тогда, когда они пусты. Опять же, см. документы  для деталей.

Так, x and y вернется x если он пуст, и y в противном случае.


14