我正在尝试破解传递给我的密码。
在其中一个代码操作中,我们有以下操作:
A = B & C
当我打印 A、B 和 C 时:
print (A)
print (B)
print (C)
我得到如下输出(发明了字符串):
frozenset({('234', 'bla bla bla'),('8', 'blo blo blo'),('1','oe oe')})
frozenset({('2', 'bla'),('9', 'blo'),('11','oe')})
frozenset({('23', 'ddd'),('3', 'brr'),('44','e')})
我的问题是:&符号在操作中起什么作用?你在做什么?
在您的案例中使用它的上下文中,运算符
&
执行称为set intersection的数学运算。集合或集合是没有重复和无序的对象的集合。它们是使用散列表实现的,因此对象必须是“可散列的”,例如、 、
str
或tuple
(可变对象,例如集合本身或列表,因为它们不是“可散列的”,所以不允许作为集合的元素)。它的优点之一是搜索效率高,或者可以执行诸如交集 ( )、并集 ( )、差 ( ) 或对称差 ( ) 之类的操作。frozenset
int
float
A & B
A | B
A - B
A ^ B
如果我们有两个集合
A
和B
,A & B
它返回另一个集合,该集合仅包含同时存在于两者中的元素,丢弃仅存在于一个中的元素:它相当于使用
set.intersection()
.frozenset
对于不可变集合(如果它可以是另一个元素set
或frozenset
“可散列”),它的工作原理相同:如您所见,返回的集合仅包括那些同时存在于中
A
和中的元素(在本例中为元组)B
。在其他情况下,例如应用于整数,它是按位运算符,二进制与(按位与)。对于输出的每一位,如果两个位都是 1,它将返回 1,否则返回 0:
如您所见,它获取操作数的每一对位,并且仅在两个位都为 1 时才返回 1: