¿Cuál es la forma más fácil de tomar la intersección de N-many lists en python?tomando la intersección de N-many listas en python
si tengo dos listas A y B, sé que puedo hacer:
a = set(a)
b = set(b)
intersect = a.intersection(b)
pero quiero hacer algo como un & & b c d & & ... de un conjunto arbitrario de las listas (idealmente sin convertir a un conjunto primero, pero si esa es la forma más fácil/más eficiente, puedo lidiar con eso.)
Ie Quiero escribir una función intersecar (* args) que lo hará arbitrariamente para muchos conjuntos de manera eficiente. ¿Cuál es la forma más fácil de hacer eso?
EDITAR: Mi propia solución es reducir (set.intersection, [a, b, c]) - ¿eso es bueno?
gracias.
En 'reducir()', no es precisamente la mejor idea, ya que está siendo eliminado en Python 3. También es más lento, por lo que he oído, en comparación con un bucle. –
Duplicado: http://stackoverflow.com/questions/2893500/take-the-intersection-of-an-arbitrary-number-of-lists-in-python –
@Xavier: 'from functools import reduce'. Se elimina de los 'builtins', no se elimina por completo. Además, lo que has escuchado sobre su velocidad es muy impreciso: puede ser mucho más rápido o más lento que un bucle for. – tzot