目录
The |= in-place OR operator in Python
|= 就地 OR 运算符与 Set 对象
当与set
对象一起使用时,就地 |= OR 运算符用于将 a 重新分配set
给 2 个集合的并集,例如set_1 |= set_2
. |= 运算符等同于set_1 = set_1 | set_2
.
set_1 = {'bobby'} set_2 = {'hadz'} # 👇️ reassign my_set to the union of my_set and my_set_2 set_1 |= set_2 print(set_1) # 👉️ {'bobby', 'hadz'}
set
对象的联合是最小的set
,它包含两个set
对象的元素。运算符是的a |= b
简写a = a | b
。
set_1 = {'bobby'} set_2 = {'hadz'} set_1 = set_1 | set_2 print(set_1) # 👉️ {'bobby', 'hadz'}
在这两种情况下,我们都将set_1
变量重新分配给 和 的set_1
并
集set_2
。
但是,您可以在不进行就地重新分配的情况下使用 OR (|) 运算符
。
set_1 = {'bobby'} set_2 = {'hadz'} print(set_1 | set_2) # 👉️ {'bobby', 'hadz'}
而您只能将就地或 (|=) 运算符与就地重新分配一起使用。
set_1 = {'bobby'} set_2 = {'hadz'} set_1 |= set_2 print(set_1) # 👉️ {'bobby', 'hadz'}
您还可以在同一语句中使用就地或 (|=) 和或 (|) 运算符。
set_1 = {'bobby'} set_2 = {'hadz'} set_3 = {'com'} set_1 |= set_2 | set_3 print(set_1) # 👉️ {'com', 'bobby', 'hadz'} print(set_2) # 👉️ {'hadz'} print(set_3) # 👉️ {'com'}
该set_1
变量被重新分配给 3 个set
对象的联合。
其他 2 个set
对象保持不变。
|= 就地 OR 运算符与字典
当与两个字典一起使用时,就地 |= OR 运算符通过合并两个字典来重新分配变量。如果一个键出现在两个字典中,则右侧操作数的值获胜。
dict_1 = {'a': 1, 'b': 2} dict_2 = {'a': 10, 'c': 30} # 👇️ reassign dict_1 by merging it with dict_2 dict_1 |= dict_2 print(dict_1) # 👉️ {'a': 10, 'b': 2, 'c': 30}
请注意,键a
在两个字典中都存在,因此右操作数中键的值优先。
该dict_1 |= dict_2
语句是 的简写dict_1 = dict_1 | dict_2
。
dict_1 = {'a': 1, 'b': 2} dict_2 = {'a': 10, 'c': 30} dict_1 = dict_1 | dict_2 print(dict_1) # 👉️ {'a': 10, 'b': 2, 'c': 30}
该|
算子称为
字典合并
算子,该|=
算子称为字典更新算子。
|
可以在不重新分配变量的情况下使用字典合并运算符。
dict_1 = {'a': 1, 'b': 2} dict_2 = {'a': 10, 'c': 30} print(dict_1 | dict_2) # 👉️ {'a': 10, 'b': 2, 'c': 30}
而字典更新|=
运算符只能与就地重新分配一起使用。
dict_1 = {'a': 1, 'b': 2} dict_2 = {'a': 10, 'c': 30} dict_1 |= dict_2 print(dict_1) # 👉️ {'a': 10, 'b': 2, 'c': 30}
|
and|=
运算符是在 Python 3.9 中添加的。这是
官方提案的链接。
您还可以
在单个语句中使用字典更新|
和字典合并运算符。|=
dict_1 = {'a': 1, 'b': 2} dict_2 = {'a': 10, 'c': 30} dict_3 = {'a': 100, 'd': 40, 'e': 50} dict_1 |= dict_2 | dict_3 print(dict_1) # 👉️ {'a': 100, 'b': 2, 'c': 30, 'd': 40, 'e': 50}
通过保留最右边的值来解决键冲突。
|= 就地 OR 运算符与数字
当与数字一起使用时,就地|=
按位或运算符用于进行二进制数学运算。该语句num1 =| num2
等效于
num1 = num1 | num2
.
num_1 = 3 # 👉️ (binary = 011) num_2 = 4 # 👉️ (binary = 100) num_1 |= num_2 print(num_1) # 👉 7️ (binary = 111)
|
运算符执行“按位或”。0
如果 和 的对应位是X
,则输出的每一位是,否则是。 Y
0
1
|=
运算符就地重新分配变量的值。
您也可以使用长格式语法来获得相同的结果。
num_1 = 3 # 👉️ (binary = 011) num_2 = 4 # 👉️ (binary = 100) num_1 = num_1 | num_2 print(num_1) # 👉 7️ (binary = 111)
如果在两个数字中的任何一个中设置了相应的位,则结果中的每一位都被设置,否则该位为0
。