jaki jest najłatwiejszy sposób na skrzyżowanie N-wielu list w pythonie?robienie przecięcia N-wielu list w pytonie
jeśli mam dwie listy A i B, wiem, że mogę zrobić:
a = set(a)
b = set(b)
intersect = a.intersection(b)
ale chcę zrobić coś jak & b & c & d & ... dla dowolnego zbioru list (najlepiej, jeśli nie jest to konwersja do zestawu w pierwszej kolejności, ale jeśli jest to najłatwiejszy/najbardziej efektywny sposób, mogę sobie z tym poradzić.)
Tzn. Chcę napisać funkcję przecinającą się (* args), która zrobi to dla dowolnie wielu zestawów wydajnie. Jaki jest najłatwiejszy sposób na zrobienie tego?
EDYCJA: Moje własne rozwiązanie redukuje (setIntersection, [a, b, c]) - czy to jest dobre?
dzięki.
W przypadku 'reduce()', nie jest to najlepszy pomysł, ponieważ jest on stopniowo wycofywany w Pythonie 3. Jest również wolniejszy, z tego, co słyszałem, w porównaniu do pętli for. –
Duplikat: http://stackoverflow.com/questions/2893500/take-intersection-of-an-arbitrary-number-of-lists-in-python –
@Xavier: 'from functools import reduce'. Został usunięty z 'builtins', nie jest całkowicie wycofany. Co więcej, to, co słyszałeś o jego prędkości, jest wysoce niedokładne: może być znacznie szybsze lub wolniejsze niż pętla for. – tzot