Pour 2.4, vous pouvez simplement définir une fonction d'intersection.
def intersect(*d):
sets = iter(map(set, d))
result = sets.next()
for s in sets:
result = result.intersection(s)
return result
pour les nouvelles versions de python :
la méthode d'intersection prend un nombre arbitraire d'arguments
result = set(d[0]).intersection(*d[1:])
Alternativement, vous pouvez intersecter le premier ensemble avec lui-même pour éviter de découper la liste et de faire une copie :
result = set(d[0]).intersection(*d)
Je ne suis pas vraiment sûr de ce qui serait le plus efficace et j'ai l'impression que cela dépendrait de la taille de l'appareil. d[0]
et la taille de la liste, à moins que python n'ait une vérification intégrée pour cela, comme par exemple
if s1 is s2:
return s1
dans la méthode d'intersection.
>>> d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]
>>> set(d[0]).intersection(*d)
set([3, 4])
>>> set(d[0]).intersection(*d[1:])
set([3, 4])
>>>