gpt4 book ai didi

python - 有人可以解释逻辑和 bool 之间的区别吗在这种情况下,

转载 作者:行者123 更新时间:2023-12-01 09:22:07 24 4
gpt4 key购买 nike

有人可以解释一下这段代码中逻辑&和 bool &之间的区别吗

def isprime(num):
return [i for i in range(2,num) if num%i==0]==[]

num_which_are_prime=[i for i in range(1,100) if isprime(i) and i!=1]
print(num_which_are_prime)

num_which_are_prime=[i for i in range(1,100) if isprime(i) & i!=1]
print(num_which_are_prime)

显示这个:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

[2, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99]

最佳答案

除了评论中所述的 & 使用不当之外。

这是因为operator precedence .

  • 的优先级低于!=
  • != 的优先级低于 &

因此,第一个表达式的计算结果为 isprime(i) and (i != 1),第二个表达式的计算结果为 ((isprime(i) & i) != 1 )

编辑

解释 & 版本的输出。正如注释中所述,& 是按位 AND 运算符。 bool 表达式 TrueFalse 可以分别表示为单个位 10。因此,表达式 isprime(i) & i 仅测试第一位(最右边的位)

  • 对于每个非素数,您都会得到 0 & i,其计算结果始终为 0,并且 0 != 1 始终为 True

  • 除了 2 之外,每个素数都是奇数(即第一位是 1)。因此,1 & x1(其中 x 是任意二进制字符串)将计算为 1,并且 1 != 1 将始终为 错误

  • 最后,2 是素数,但它是偶数(第一位是 0)。因此,1 & 10 将为 0,并且 0 != 1 的计算结果为 True

因此,您的输出仅包含非素数和数字 2。

关于python - 有人可以解释逻辑和 bool 之间的区别吗在这种情况下,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50733329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com