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中。
特别注意 列表=[对象]*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类似方法进行结构体数组初始化。
选项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