为什么“set(a) and set(b)”与“set(a) & set(b)”在 python 中给出不同的结果?

问题描述 投票:0回答:1

我知道一个是按位运算而另一个不是,但是这个按位属性如何影响给定表达式的结果。 因为两者都应该简单地比较两个集合中的元素并产生共同的元素。

set(a) & set(b)
在集合(a)和集合(b)中找到共同元素时给出正确答案,而
set(a) and set(b)
给出错误答案。

Python代码:

nums2 = [9,4,9,8,4]
nums1 = [4,9,5]

a = set(nums1) and set(nums2)
b = set(nums1) & set(nums2)

print(a)
print(b)

结果:

 a = {8, 9, 4}
b = {9, 4}

python python-3.x list set set-intersection
1个回答
0
投票

文档中所述

表达式x和y首先计算x;如果 x 为假,则其值为 回;否则,计算 y 的结果值为 退货了

因此

set(nums1) and set(nums2)

首先评估

set(nums1)
{ 9, 4, 5 }
(这不是错误的 - 请参阅 documentation)因此表达式返回
set(nums2)
{ 8, 9, 4 }
.

相比之下,也如文档中所述:

set(nums1) & set(nums2)

计算两个集合的交集,即

{ 9, 4 }

© www.soinside.com 2019 - 2024. All rights reserved.