多个list取交集算法
时间: 2023-10-03 09:02:39 浏览: 162
您好,对于多个list取交集算法,可以使用Python中的set函数来实现。首先将所有的list转化为set,然后使用交集运算符“&”来求交集。
具体实现方法如下:
```python
def intersection(*args):
if len(args) == 0:
return set()
res = set(args[0])
for ar in args[1:]:
res &= set(ar)
return res
```
这样,可以通过传入任意数量的list参数,实现求多个list的交集。
希望能够帮到您!
相关问题
多个list取交集算法java写一下
好的,我会为您编写一个多个List取交集的Java算法:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> list2 = new ArrayList<>(Arrays.asList(2, 3, 5, 7, 11));
List<Integer> list3 = new ArrayList<>(Arrays.asList(3, 4, 5, 6, 8));
List<Integer> result = intersect(list1, list2, list3);
System.out.println(result);
}
public static List<Integer> intersect(List<Integer>... lists) {
List<Integer> intersection = new ArrayList<>(lists[0]);
for (List<Integer> list : lists) {
intersection.retainAll(list);
}
return intersection;
}
}
```
以上是一个简单的多个List取交集的Java算法,通过传入不定长的List参数,利用Java集合类的retainAll()方法求交集。
多个list都存在的元素取交集算法java
您好!很高兴收到您的问题。以下是一种Java算法,用于获取多个列表的元素的交集:
```
public List<Integer> getIntersection(List<Integer>... lists) {
Map<Integer, Integer> counter = new HashMap<>();
for (List<Integer> list : lists) {
for (int element : list) {
if (counter.containsKey(element)) {
counter.put(element, counter.get(element) + 1);
} else {
counter.put(element, 1);
}
}
}
List<Integer> intersection = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : counter.entrySet()) {
if (entry.getValue() == lists.length) {
intersection.add(entry.getKey());
}
}
return intersection;
}
```
此算法使用哈希映射和计数器来计算每个元素的出现次数,并仅将出现在所有输入列表中的元素添加到交集中。您可以调用该方法并传入多个列表,如下所示:
```
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6);
List<Integer> list3 = Arrays.asList(2, 3, 4, 6);
List<Integer> intersection = getIntersection(list1, list2, list3);
System.out.println(intersection); // Output: [3, 4]
```
如果您有任何其他问题,请随时问我。
阅读全文