ce qui est la meilleure façon de prendre l'intersection de N-de listes en python?prenant intersection de N-de listes en python
si j'ai deux listes a et b, je sais que je peux faire:
a = set(a)
b = set(b)
intersect = a.intersection(b)
mais je veux faire quelque chose comme un & b & c & d & ... pour un ensemble de listes arbitraires (idéalement sans conversion à un ensemble d'abord, mais si c'est le plus facile/moyen le plus efficace, je peux faire face à cela.)
Ie Je veux écrire une fonction intersect (* args) qui le fera arbitrairement pour de nombreux ensembles efficacement. Quelle est la meilleure façon de faire cela?
EDIT: Ma solution est de réduire (set.intersection, [a, b, c]) - est-ce bien?
merci.
Sur 'réduire()', ce n'est pas exactement la meilleure idée, car il est en train de disparaître en Python 3. Il est aussi plus lent, de ce que je l'ai entendu, par rapport à une boucle. –
double: http://stackoverflow.com/questions/2893500/take-the-intersection-of-an-arbitrary-number-of-lists-in-python –
@Xavier: 'de functools importer reduce'. Il est supprimé des 'builtins', il n'est pas complètement éliminé. En outre, ce que vous avez entendu parler de sa vitesse est très imprécise: il peut être beaucoup plus rapide ou plus lent que pour une boucle. – tzot