Python中使用in运算符判断两个集合包含关系返回False的原因是什么?
原因说明
in运算符的作用是判断左侧的单个元素是否属于右侧的可迭代对象,你当前的写法set(bestStudents) in set(scholarships),实际是在判断「{56, 75, 23}这个集合对象本身,是不是scholarships转成的集合里的一个元素」。而set(scholarships)里的元素都是整数,不存在集合类型的元素,所以最终返回False。
正确写法
如果你要确认bestStudents里的所有元素都存在于scholarships中(即前者是后者的子集),可以用两种方式:
- 调用集合的
issubset()方法:set(bestStudents).issubset(set(scholarships)) - 使用子集判断运算符
<=:set(bestStudents) <= set(scholarships)
如果要直接判断两个集合的元素完全一致,直接用等号判断即可:
set(bestStudents) == set(scholarships)
以上三种写法在你的示例场景下都会返回True。
内容的提问来源于stack exchange,提问作者Steve Scott
相关产品推荐
相关产品推荐

