📌  相关文章
📜  Python – 每个 List 元素在另一个中出现的总和(1)

📅  最后修改于: 2023-12-03 15:34:08.914000             🧑  作者: Mango

Python – 每个 List 元素在另一个中出现的总和

有时候我们需要统计一个 List 中的每个元素在另外一个 List 中出现的总次数。这个需求在数据分析中很常见。Python 提供了几种方法来实现这个目标。

方法一:使用 for 循环和 count 函数

这个方法很简单,就是对 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 中的所有元素来计算它的出现次数。

方法二:使用 Counter 对象

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 的大小很大时。我们应该尽量选择时间复杂度低的算法来解决问题。