什么是&;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])