You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中整数运算里“&”运算符的作用是什么?

问题拆解与解答

嘿,这个问题挺有意思的!让我一步步帮你理清楚:

关于你的列表推导式结果

首先要说明的是:你写的代码 Codx = [num for num in range(1,9) if num & 2 = 0] 在标准Python环境中应该会直接抛出语法错误(SyntaxError: invalid syntax),因为条件判断语句里不能使用普通的赋值运算符 =(只有Python 3.8+支持的海象运算符 := 允许在表达式中赋值,但你的写法也不符合它的规则)。

不过你得到的结果 [1,4,5,8] 完全匹配条件 num & 2 == 0 的筛选结果,所以大概率是你输入时的笔误——把比较运算符 == 写成了赋值运算符 =,才会出现这个结果~

Python中整数的&运算符:按位与

当&和整数搭配使用时,它是**按位与(Bitwise AND)**运算符,具体工作流程如下:

  • 将两个整数转换为二进制表示;
  • 对两个二进制数的每一位进行"与"操作:只有当两个对应位都为1时,结果位才是1,否则为0;
  • 将运算后的二进制结果转换回十进制整数。

用你提到的例子验证:

  • 3 & 2:3的二进制是11,2的二进制是10,按位与后得到10,对应十进制的2,所以结果为2;
  • 5 & 2:5的二进制是101,2的二进制是010,按位与后得到000,对应十进制的0,所以结果为0。

再对应你的列表推导式,遍历range(1,9)中的每个数计算num & 2:

  • 1 → 001 & 010 = 000 → 0 → 符合==0的条件,被加入列表;
  • 2 → 010 & 010 = 010 → 2 → 不符合;
  • 3 → 011 & 010 = 010 → 2 → 不符合;
  • 4 → 100 & 010 = 000 → 0 → 符合;
  • 5 → 101 & 010 = 000 → 0 → 符合;
  • 6 → 110 & 010 = 010 → 2 → 不符合;
  • 7 → 111 & 010 = 010 → 2 → 不符合;
  • 8 → 1000 & 0010 = 0000 → 0 → 符合。

最终筛选出的结果就是[1,4,5,8],和你看到的完全一致!

内容的提问来源于stack exchange,提问作者Tade Ogundele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:54:53