什么是&;python中的平均值
嗨,我遇到了以下代码什么是&;python中的平均值,python,Python,嗨,我遇到了以下代码 numdigits = len(cardNumber) oddeven = numdigits & 1 这到底是怎么回事?我不确定“&”在做什么。回答 &符号是位AND运算符。与1一起使用时,它基本上会屏蔽该值以提取最低位,或者换句话说,它会告诉您该值是偶数还是奇数 有关Python的和运算符的更多信息 有关详细信息,请参阅: 为什么检查奇数与偶数有效 编辑:添加这个部分,因为这个答案是得到一些爱 将一个值与1进行ANDing的原因表明该值是奇数还是偶数,起初可能
numdigits = len(cardNumber)
oddeven = numdigits & 1
这到底是怎么回事?我不确定“&”在做什么。回答
&
符号是位AND运算符。与1一起使用时,它基本上会屏蔽该值以提取最低位,或者换句话说,它会告诉您该值是偶数还是奇数
有关Python的和运算符的更多信息
有关详细信息,请参阅:
为什么检查奇数与偶数有效
编辑:添加这个部分,因为这个答案是得到一些爱
将一个值与1进行ANDing的原因表明该值是奇数还是偶数,起初可能并不明显
一个数字的二进制表示法本质上是从最右边的数字开始,以1,2,4,8
用这种方式表示任何数字只有一种方法。例如,数字13(以10为基数)可以用二进制写为“1101”(或十六进制写为0xD,但这并不重要)。请看这里:
1 1 0 1
x x x x
8 4 2 1
= = = =
8 + 4 + 0 + 1 = 13
请注意,除了最右边的二进制数字外,所有其他1
数字将向总和中添加偶数(即2的倍数)。所以得到奇数最终和的唯一方法是从最右边的数字加上奇数1。所以,如果我们好奇一个数字是奇数还是偶数,我们可以看看它的二进制表示,忽略除最右边的数字以外的一切
为此,我们使用按位AND运算符。二进制中的值1
表示为1
:
0 0 0 1
x x x x
8 4 2 1
= = = =
0 + 0 + 0 + 1 = 1
如果设置了值的最右边位,则将值与1
进行类似的ANDing运算,将导致1
,如果未设置,将导致0
由于在大多数语言中,0
通常被视为“假”,而非零值被视为“真”,因此我们可以简单地说,这是一种快捷方式:
if (value & 1): do_something_with_odd_value()...
&
是一种,这是进行位级计算的有效方法。它使用numdigits
并逐位使用1
对其进行运算。这是一种按位操作,在这种情况下,如果cardNumber
的元素数为偶数(否则为一个),则将零值赋给oddDeven
例如:假设len(cardNumber)==235
。然后numdigits==235
,这是二进制的0b11101011
。现在,1
是二进制的'0b00000001'
,当您按位“和”它们时,您将得到:
11101011
&
00000001
----------
= 00000001
类似地,如果numdigits
为234,您将得到:
11101010
&
00000001
----------
= 00000000
因此,它基本上是一种模糊的方法,用于检查len(cardNumber)%2
。可能是由有C背景的人写的,因为它不是很像Python——可读性很重要 &
用于取两个的交点:
更一般地说,Python允许,这意味着您可以编写类来重新解释&
操作符的功能。这就是图书馆和劫持代码< > >和<代码> .< /P>与java或C++语言中的相同的事物,或者(在类似的上下文中)C或C++。
set1 = {0,1,2,3}
set2 = {2,3,4,5}
print(set1 & set2)
>>>set([2, 3])