python 中的 & 是什么意思[重复]

2025-03-17 09:10:00
admin
原创
63
摘要:问题描述:我遇到了以下代码numdigits = len(cardNumber) oddeven = numdigits & 1 这里到底发生了什么?我不确定“&”在做什么。解决方案 1:回答该&符号是按位 AND 运算符。与 1 一起使用,它基本上会屏蔽值以提取最低位,换句话说,它会告诉您该...

问题描述:

我遇到了以下代码

numdigits = len(cardNumber)
oddeven = numdigits & 1

这里到底发生了什么?我不确定“&”在做什么。


解决方案 1:

回答

&符号是按位 AND 运算符。与 1 一起使用,它基本上会屏蔽值以提取最低位,换句话说,它会告诉您该值是偶数还是奇数。

有关 Python&运算符的更多信息

有关更多信息,请参阅:http://wiki.python.org/moin/BitwiseOperators

为什么检查奇数和偶数是有效的

编辑:添加此部分,因为这个答案得到了一些喜爱

通过对一个值与 1 进行“与”运算来判断该值是奇数还是偶数,这一点一开始可能并不明显。

数字的二进制表示本质上是 2 的每个幂的一系列 YES 或 NO 的总和,从最右边的数字开始向左移动,分别为 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结果将为,否则为。1`0`

由于0在大多数语言中通常被认为是“假”,而非零值被认为是“真”,所以我们可以简单地说:

if (value & 1): do_something_with_odd_value()...

解决方案 2:

&也用于求两个Python 集合的交集:

set1 = {0,1,2,3}
set2 = {2,3,4,5}
print(set1 & set2)
>>>set([2, 3])

更一般地,Python 允许运算符重载,这意味着你可以编写类来重新解释运算符的作用。这就是Pandas和Numpy&等库劫持的方式。&

解决方案 3:

oddeven这是一个按位运算,在这种情况下,如果cardNumber元素数量为偶数,则分配零(否则分配一)。

举个例子:假设len(cardNumber) == 235。然后numdigits == 2350b11101011以二进制表示。现在1'0b00000001'二进制,当你按位“AND”它们时,你会得到:

  11101011
  &
  00000001
  ----------
= 00000001

类似地,如果numdigits是 234,则会得到:

  11101010
  &
  00000001
  ----------
= 00000000

因此,这基本上是一种检查是否 的模糊方法len(cardNumber) % 2。可能是由具有 C 背景的人编写的,因为它不太符合 Python 风格 - 可读性很重要!

解决方案 4:

&是按位与,这是进行位级计算的有效方法。它是逐位取numdigits并将其与 进行与运算。1

解决方案 5:

它是一个二进制按位“与”运算符。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用