📅  最后修改于: 2023-12-03 15:34:08.914000             🧑  作者: Mango
有时候我们需要统计一个 List 中的每个元素在另外一个 List 中出现的总次数。这个需求在数据分析中很常见。Python 提供了几种方法来实现这个目标。
这个方法很简单,就是对 List1 中的每个元素进行循环,然后使用 count 函数来计算它在 List2 中出现的总次数。
list1 = [1, 2, 3, 4]
list2 = [1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 4]
result = {}
for item in list1:
result[item] = list2.count(item)
print(result)
输出:
{1: 2, 2: 3, 3: 2, 4: 4}
这个方法的时间复杂度是 $O(n^2)$,因为对于 List1 中的每个元素,都需要遍历 List2 中的所有元素来计算它的出现次数。
Python 的 collections 模块提供了一个名为 Counter 的类,可以用来统计 List 中每个元素出现的次数。
from collections import Counter
list1 = [1, 2, 3, 4]
list2 = [1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 4]
result = dict(Counter(list2))
for key, value in result.items():
if key not in list1:
del result[key]
print(result)
输出:
{1: 2, 2: 3, 3: 2, 4: 4}
这个方法的时间复杂度是 $O(n)$,因为 Counter 对象的构造函数和字典对象的遍历都是 $O(n)$ 的。
以上就是两种实现 List 元素在另一个 List 中出现次数的方法。总的来说,第二种方法更加高效,特别是当 List 的大小很大时。我们应该尽量选择时间复杂度低的算法来解决问题。