Python集合运算代码

img


选项C为什么是对的呢?b<b本身不就是错了吗?为什么还能对?

A: a < b
这个表达式表示集合a是否是集合b的真子集(即a包含在b中)。
结果为False,因为集合a中的元素1、2、3、4不在集合b中。

B: c < a
这个表达式表示集合c是否是集合a的真子集(即c包含在a中)。
结果为True,因为集合c中的元素5和6都在集合a中。

C: d < (d - c) | a
这个表达式表示集合d是否是集合(d - c) | a的真子集(即d包含在(d - c) | a中)。
结果为True,因为集合(d - c) | a中的元素包括d中的元素7以及a中的所有元素。

D: c in b
这个表达式表示集合c是否是集合b的子集(即c包含在b中)。
结果为True,因为集合c中的元素5和6都在集合b中。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7742174
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Python中函数传参是传值还是引用?对比C语言中的参数传递
  • 同时,你还可以查看手册:python-互联网协议和支持 中的内容
  • 除此之外, 这篇博客: python 结构体数组的正确初始化方法中的 python并没有C语言中的结构体概念,可以使用对象代替结构体存储数据。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    特别注意 列表=[对象]*N 这种写法是错误的,因为初始化得到的N个对象指向相同的地址,实验如下:

    class Phase_struct:
        pass
    #方法1
    phases1 =  [Phase_struct(),Phase_struct(),Phase_struct()]
    print(id(phases1[0]))
    print(id(phases1[1]))
    print(id(phases1[2]))
    #方法2
    phases2 =  [Phase_struct()]*3
    print(id(phases2[0]))
    print(id(phases2[1]))
    print(id(phases2[2]))
    #方法3
    phases3= []
    N=3
    for k in range(N):
        phases3.append(Phase_struct())
    print(id(phases3[0]))
    print(id(phases3[1]))
    print(id(phases3[2]))
    

    在这里插入图片描述
    结果显示方法2得到的列表中所有对象指向地址相同,因此建议使用方法3类似方法进行结构体数组初始化。

  • 您还可以看一下 唐宇迪老师的Python数据分析与机器学习实战课程中的 软间隔C值对结果的影响小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    选项C是正确的,因为$b.intersection(c).intersection(d)$是空集,即$b$与$c$和$d$的交集为空集。因此,$b > \varnothing$,这是成立的。在Python中,集合的比较操作符实际上是子集操作符。因此,$b < b.union(c).union(d)$是不成立的,但$b > b.intersection(c).intersection(d)$是成立的。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

因为关系运算的优先级低,表达式其实是 d < ((d - c) | a)
好比a>b-c,当然是a>(b-c),而不是(a>b)-c
d -c = {7}
{7} | a = {1, 2, 3, 4, 5, 6, 7}
d < {1, 2, 3, 4, 5, 6, 7} = True