Python验证集合等式A∩(B\C)=(A∩B)\(A∩C)时报TypeError原因查询
代码错误原因
- 你使用的
difference_update()、intersection_update()都属于集合的就地修改方法,这类方法不会返回修改后的集合,返回值固定为None。你把B.difference_update(C)的返回值(也就是None)直接作为参数传给A.intersection_update(),自然会触发NoneType不可迭代的类型错误。 - 额外说明:这类带
_update后缀的方法会直接修改原集合对象,如果你后续还要用到原始的A、B、C集合做其他运算,用这类方法会污染原始数据,也不符合你验证等式的需求。
第一步代码修复示例
A = {1,2,3,4,5,6,7} B = {4,5,6,7,8,9,10} C = {2,4,6,8,10} # 方式1:用集合运算方法,不修改原集合 left = A.intersection(B.difference(C)) print(left) # 输出 {5, 7} # 方式2:也可以直接用Python集合运算符写,更简洁 left_op = A & (B - C) print(left_op) # 同样输出 {5, 7}
完整集合等式验证代码
# 定义原始集合 A = {1,2,3,4,5,6,7} B = {4,5,6,7,8,9,10} C = {2,4,6,8,10} # 计算等式左右两边 left = A & (B - C) right = (A & B) - (A & C) # 对比结果 print(left == right) # 输出True,验证等式成立
内容的提问来源于stack exchange,提问作者user17018110
相关产品推荐
相关产品推荐

