jcpython2 发表于 2022-10-19 12:22:48

这个in用法是错误的吗?

a = {1,2,3}
b = {3,4,5}

print(b in a)

输出了false

我理解的是 b包含3 a也包含3,应该输出True

tommyyu 发表于 2022-10-19 12:30:46

本帖最后由 tommyyu 于 2022-10-19 12:34 编辑

in 不是判断集合与集合之间是否互相包含,而是判断集合中是否有这个元素,以列表举一个例子:>>> 1 in
True
>>> in
False
>>> in ]
True
判断集合和集合之间的关系 --> 传送门

Twilight6 发表于 2022-10-19 12:44:54


b in a 是判断 a 中是否含有 b ,你的 b 为 {3, 4, 5},而 a 中没有 {3, 4, 5} 这个集合,所以返回 False

如果你想实现返回 True,应该这样写:

b = {3, 4, 5}
a = {1, 2, 3, frozenset(b)}
print(b in a)

Python 因为集合的唯一性,只能加入不可变数据类型,而 forzenset 可以冻结集合

也就是将 集合变为不可变的数据类型,这样进行嵌套入集合中去,再 用 in 进行判断即可


jcpython2 发表于 2022-10-19 15:13:32

Twilight6 发表于 2022-10-19 12:44
b in a 是判断 a 中是否含有 b ,你的 b 为 {3, 4, 5},而 a 中没有 {3, 4, 5} 这个集合,所以返回 False ...

竟然还有forzenset这样的操作,我的教程不知道是没有还是后面才有,才到集合基础部分
页: [1]
查看完整版本: 这个in用法是错误的吗?