问题:为什么以下基本数学公式不能用于python3交叉和联合计算?
len(q1)+ len(q2) - intersection = union
输入
q1 = ['How', 'does', 'the', 'Surface', 'Pro', 'himself', '4', 'compare', 'with', 'iPad', 'Pro', '?']
q2 = ['Why', 'did', 'Microsoft', 'choose', 'core', 'm3', 'and', 'not', 'core', 'i3', 'home', 'Surface', 'Pro', '4', '?']
intersect = set(q1).intersection(q2)
union_length = list(set(q1).union(q2))
print('q1_len',len(q1))
print('q2_len',len(q2))
print('union',len(union_length))
print('intersect',len(intersect))
输出
q1_len 12
q2_len 15
union 21
intersect 4
12 + 15 - 4应该是23而不是21。
答案 0 :(得分:2)
该规则适用于set not list,因此如果您打印:
print('q1_len',len(set(q1)))
print('q2_len',len(set(q2)))
print('union',len(union_length))
print('intersect',len(intersect))
输出:
('q1_len', 11)
('q2_len', 14)
('union', 21)
('intersect', 4)
公式(11 + 14 - 4 = 21)成立。