cách dễ nhất để lấy giao điểm của các danh sách N-nhiều trong python là gì?lấy giao điểm của các danh sách N-nhiều trong trăn
nếu tôi có hai danh sách a, b, tôi biết tôi có thể làm:
a = set(a)
b = set(b)
intersect = a.intersection(b)
nhưng tôi muốn làm một cái gì đó giống như một & b & c & d & ... cho một thiết lập tùy ý danh sách (lý tưởng là không chuyển đổi thành tập đầu tiên, nhưng nếu đó là cách dễ nhất/hiệu quả nhất, tôi có thể giải quyết vấn đề đó.)
Tức là Tôi muốn viết một chức năng giao nhau (* args) mà sẽ làm điều đó cho nhiều tùy ý một cách hiệu quả. Cách dễ nhất để làm điều đó là gì?
EDIT: Giải pháp của riêng tôi giảm (set.intersection, [a, b, c]) - có tốt không?
cảm ơn.
Trên 'reduce()', nó không chính xác là ý tưởng hay nhất vì nó bị loại bỏ trong Python 3. Nó cũng chậm hơn so với những gì tôi đã nghe, so với vòng lặp for. –
Nhân bản: http://stackoverflow.com/questions/2893500/take-the-intersection-of-an-arbitrary-number-of-lists-in-python –
@Xavier: 'từ functools nhập khẩu giảm'. Nó bị xóa khỏi 'nội trang', nó không bị loại bỏ hoàn toàn. Ngoài ra, những gì bạn đã nghe về tốc độ của nó là rất không chính xác: nó có thể nhanh hơn hoặc chậm hơn nhiều so với vòng lặp for. – tzot