Python:如何生成包含在两个列表中重复的项的列表

我有两个项目清单:

list_1 = ['A','B','C','D']
list_2 = ['C','F','A','G','D','C']

我想用两个列表中的元素创建一个新列表。像这样:

['A','D']

请注意,任何项目都可以在列表中重复多次,并且在新列表中的次数应与在两个列表中重复的次数一样多。例如,“ C”在list_1中重复2次,在list_2中重复3次,因此在结果中出现2次。

要做的经典方法是:

import copy
result = []
list_2 = fruit_list_2.copy()
for fruit in fruit_list_1:
  if fruit in list_2:
    result.append(fruit)
    list_2.remove(fruit)

但我有兴趣按世代列表进行操作:[如果数字> 0,则为数字中的数字]。有可能吗?

laosizhxy 回答:Python:如何生成包含在两个列表中重复的项的列表

如果您不太担心新列表的顺序,则可以使用collections.Counter

>>> list((Counter(list_1) & Counter(list_2)).elements())
['A','C','D']

&将两者的交集作为多集,其中最小数量用于公共元素。 elements方法以迭代器的形式返回结果中的项目,因此返回list包装器。

,

了解有关collections.Counter

from collections import Counter

list_3 = list((Counter(list_1) & Counter(list_2)).elements())
,

我认为这很简单:

list_1 = ['A','B','D']
list_2 = ['C','F','A','G','D','C']

list_3 = [x for x in list_1 if x in list_2]

print(list_3)

# returns ['A','D']
,

尝试一下:

[common for common in list_1 if common in list_2]

学习愉快...:)

本文链接:https://www.f2er.com/3136882.html

大家都在问