Google不允许我进行搜索,|=
因此我在查找相关文档时遇到了麻烦。有人知道吗
|=
在成对的对象之间执行 就地 +操作。尤其是:
在大多数情况下,它与|
操作员有关。请参阅下面的示例。
套装
例如,两个分配的集合的s1
并并s2
共享以下等效表达式:
>>> s1 = s1 | s2 # 1
>>> s1 |= s2 # 2
>>> s1.__ior__(s2) # 3
其中的最终值s1
等于:
例
在这里,我们将OR(|
)和就地OR(|=
)应用于 集合 :
>>> s1 = {"a", "b", "c"}
>>> s2 = {"d", "e", "f"}
>>> # OR, |
>>> s1 | s2
{'a', 'b', 'c', 'd', 'e', 'f'}
>>> s1 # `s1` is unchanged
{'a', 'b', 'c'}
>>> # In-place OR, |=
>>> s1 |= s2
>>> s1 # `s1` is reassigned
{'a', 'b', 'c', 'd', 'e', 'f'}
辞典
在Python 3.9+中,在字典之间提出了新的merge(|
)和update(|=
)运算符。注意:这些与上述集合运算符不同。
两个指定的dictd1
和之间的给定操作d2
:
>>> d1 = d1 | d2 # 1
>>> d1 |= d2 # 2
其中d1
经由相当于:
d1.update(d2)
例
在此,我们将merge(|
)和update(|=
)应用于 字典 :
>>> d1 = {"a": 0, "b": 1, "c": 2}
>>> d2 = {"c": 20, "d": 30}
>>> # Merge, |
>>> d1 | d2
{"a": 0, "b": 1, "c": 20, "d": 30}
>>> d1
{"a": 0, "b": 1, "c": 2}
>>> # Update, |=
>>> d1 |= d2
>>> d1
{"a": 0, "b": 1, "c": 20, "d": 30}
专柜
在collections.Counter
涉及称为数学数据结构
多集
(MSET)。它基本上是(对象,多重性)键值对的决定。
给定两个分配柜台之间的操作c1
和c2
:
>>> c1 = c1 | c2 # 1
>>> c1 |= c2 # 2
其中c1
经由相当于:
多集的并集包含每个条目的最大重复数。请注意,这与两个集合之间或两个常规字典之间的行为方式不同。
例
在这里,我们将union(|
)和就地union(|=
)应用于 Counters :
import collections as ct
>>> c1 = ct.Counter({2: 2, 3: 3})
>>> c2 = ct.Counter({1: 1, 3: 5})
>>> # Union, |
>>> c1 | c2
Counter({2: 2, 3: 5, 1: 1})
>>> c1
Counter({2: 2, 3: 3})
>>> # In-place Union, |=
>>> c1 |= c2
>>> c1
Counter({2: 2, 3: 5, 1: 1})
号码
最后,您可以进行二进制数学运算。
在两个分配的数字n1
和之间进行给定的运算n2
:
>>> n1 = n1 | n2 # 1
>>> n1 |= n2 # 2
其中n1
经由相当于:
例
在这里,我们将按位OR(|
)和就位按位OR(|=
)应用于 数字 :
>>> n1 = 0
>>> n2 = 1
>>> # Bitwise OR, |
>>> n1 | n2
1
>>> n1
0
>>> # In-place Bitwise OR, |=
>>> n1 |= n2
>>> n1
1
评论
本节简要回顾一些按位数学。在最简单的情况下,按位或运算会比较两个二进制位。1
除非两个位均为,否则它将始终返回0
。
>>> assert 1 == (1 | 1) == (1 | 0) == (0 | 1)
>>> assert 0 == (0 | 0)
现在,我们将这个想法扩展到二进制数之外。给定任意两个整数(缺少小数部分),我们应用按位“或”并得到一个积分结果:
>>> a = 10
>>> b = 16
>>> a | b
26
怎么样?通常,按位运算遵循一些“规则”:
让我们将这些规则应用于上面的常规整数。
(1)比较二进制等效项,在这里视为字符串(0b
表示二进制):
>>> bin(a)
'0b1010'
>>> bin(b)
'0b10000'
(2)对每列应用按位或运算(0
当两者均为时0
,否则1
):
01010
10000
-----
11010
(3)返回给定类型的结果,例如以10为底的十进制数:
>>> int(0b11010)
26
内部二进制比较意味着我们可以将后者应用于任何基数的整数,例如十六进制和八进制:
>>> c = 0xa # 10
>>> d = 0o20 # 16
>>> c | d
26
也可以看看
__ior__()
方法以迭代可迭代对象的示例MutableSet
|=
更新一组+就位按位或运算符不能应用于文字;将对象分配给名称。
++特殊方法返回与其对应运算符相同的操作。
问题内容: 之间有什么区别: 我看到super在只有单一继承的类中经常使用它。我知道为什么你会在多重继承中使用它,但是不清楚在这种情况下使用它的好处。 问题答案: 单继承的好处是微不足道的-大多数情况下,你不必将基类的名称硬编码到每个使用其父方法的方法中。 但是,如果不使用,几乎不可能使用多重继承。这包括常见的惯用语,例如,接口,抽象类等。这扩展到了以后扩展你的代码的代码。如果以后有人想编写一个扩
问题内容: 我看到了一个将函数应用于元组的代码示例。结果,它返回一个负整数。我想知道这个功能做什么?Google没有帮助。我找到了一个页面,该页面解释了哈希的计算方式,但没有解释为什么我们需要此函数。 问题答案: 哈希是一个固定大小的整数,用于标识特定值。每个值都需要有自己的哈希,因此对于相同的值,即使不是同一对象,您也将获得相同的哈希。 散列值的创建方式应使结果值均匀分布,以减少所得到的散列冲突
问题内容: 我在这里碰到了这个,总是这样使用: 什么是运营商做的,为什么不使用普通的或? 抱歉,如果以前没有回答,搜索引擎将不喜欢标点符号。 问题答案: http://docs.python.org/reference/expressions.html#notin说: [操作员]和是等效的;为了与C保持一致,是首选。[…]拼写被认为是过时的。
问题内容: 首先,我想澄清一个问题:它是关于函数的, 而不是 列表的片段或类似的字符串。 文档提到该函数在NumPy中使用,并且没有给出用法示例(说了 如何使用它, 但没有说 何时使用它 )。而且,我 从未 见过在任何Python程序中使用过此函数。 在以纯Python(无NumPy或SciPy)编程时,何时应使用该函数?任何示例将不胜感激。 问题答案: 给出与相同的结果。一个的优点对象是,它可以
问题内容: 我知道构造函数会创建一个新列表,但是它的特征到底是什么? 打电话时会怎样? 打电话时会怎样? 打电话时会怎样? 据我所知,调用构造函数会删除最外面的花括号(元组或列表),并将其替换为。这是真的?还有什么其他细微差别? 问题答案: 将传递给它的iterable转换为列表。如果itertable已经是一个列表,则返回 浅表副本 ,即仅最外层的容器是新的,其余对象仍然相同。
问题内容: python中反斜杠b的用途是什么,我在python解释器中运行了 打印“ \” foo \ bar” ,并得到以下结果: 问题答案: 请参阅字符串文字文档: ASCII退格键(BS) 它产生一个 退格字符 。打印该字符时,终端会在第二秒上退格。