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

2025-03-17 09:10:00
admin
原创
32
摘要:问题描述:我遇到了以下代码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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1887  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1425  
  在制造业数字化转型的进程中,PLM(产品生命周期管理)系统、ERP(企业资源计划)系统、MES(制造执行系统)以及 CAD(计算机辅助设计)软件都扮演着至关重要的角色。然而,这些系统和软件各自独立运行时,往往难以发挥出最大的协同效应。实现 PLM 系统与 ERP、MES、CAD 的有效集成,成为提升企业整体竞争力、优化...
plm系统的主要功能模块   3  
  产品生命周期管理(PLM)作为一种先进的管理理念和技术,在电子与半导体行业正发挥着日益重要的作用。随着电子与半导体行业的快速发展,产品更新换代速度加快,市场竞争愈发激烈,企业面临着诸多挑战,如缩短产品上市时间、提高产品质量、降低成本等。而PLM的应用为企业应对这些挑战提供了有效的解决方案,展现出巨大的应用价值。提升产品...
plm项目   4  
  PLM(产品生命周期管理)项目管理软件在现代企业的产品研发、生产与运营中扮演着至关重要的角色。它整合了从产品概念设计到退役的全流程数据与流程,助力企业提升效率、降低成本并增强创新能力。随着科技的飞速发展以及企业需求的不断演变,未来十年 PLM 项目管理软件的发展充满了无限可能,值得深入探讨与预测。智能化与自动化趋势智能...
plm产品全生命周期管理   6  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用