Python3设置,相互连接和字符串列表的联合

时间:2017-04-16 01:23:59

标签: python list python-3.x set

问题:为什么以下基本数学公式不能用于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。

1 个答案:

答案 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)成立。