2010-03-23 5 views
4

En Python si j'ai 2 listes disent:en Python trouver nombre de mêmes éléments dans 2 listes

l1 = ['a', 'b', 'c', 'd'] 
l2 = ['c', 'd', 'e'] 

est-il un moyen de savoir combien d'éléments ils ont le même. Dans le cas à ce sujet serait 2 (c et d)

Je sais que je pouvais faire une boucle imbriquée, mais est-il pas une fonction intégrée comme en php avec la fonction array_intersect

Merci

+0

double: http://stackoverflow.com/questions/2424700/how-to-get-a-list-with-elements-that-are-contained-in -deux-autres-listes –

Répondre

9

vous pouvez utiliser une intersection de jeu pour que :)

l1 = ['a', 'b', 'c', 'd'] 
l2 = ['c', 'd', 'e'] 
set(l1).intersection(l2) 
set(['c', 'd']) 
6
>>> l1 = ['a', 'b', 'c', 'd'] 
>>> l2 = ['c', 'd', 'e'] 
>>> set(l1) & set(l2) 
set(['c', 'd']) 
5

Si vous avez seulement des éléments uniques, vous pouvez utiliser le type de données de jeu et utiliser intersection:

s1, s2 = set(l1), set(l2) 
num = len(s1.intersection(s2)) 
1

Utilisation: jeux

l1 = ['a', 'b', 'c', 'd'] 
l2 = ['c', 'd', 'e'] 


def list_count_common(list_a, list_b): 
    result = len(list(set(list_a) & set(list_b))) ## this is the line that does what you want 
    return result 

print list_count_common(l1, l2) ## prints 2 
Questions connexes