2017-04-16 9 views
0

Frage: Wie funktioniert die folgende grundlegende math Formel mit der Python3-Schnittmenge und Union-Berechnung nicht funktioniert?Python3 Sets, schneiden und Union der Liste der Strings

len (q1) + len (q2) - Kreuzung = Union

Eingangs

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)) 

Ausgang

q1_len 12 
q2_len 15 
union 21 
intersect 4 

12 + 15 - 4 23 sollte nicht 21.

Antwort

2

T er gilt nicht Liste zu setzen, so dass, wenn Sie drucken:

print('q1_len',len(set(q1))) 
print('q2_len',len(set(q2))) 
print('union',len(union_length)) 
print('intersect',len(intersect)) 

Ausgang:

('q1_len', 11) 
('q2_len', 14) 
('union', 21) 
('intersect', 4) 

Die Formel (11 + 14-4 = 21) gilt.

+1

Das ist richtig, vergessen, die len des Satzes nicht die Liste zu bekommen. – user2263572