Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何生成在两个列表中重复项目的列表_Python_Python 3.x_List_List Comprehension_Generate - Fatal编程技术网

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

Python:如何生成在两个列表中重复项目的列表,python,python-3.x,list,list-comprehension,generate,Python,Python 3.x,List,List Comprehension,Generate,我有两个项目清单: list_1 = ['A', 'B', 'C', 'C', 'D'] list_2 = ['C', 'C', 'F', 'A', 'G', 'D', 'C'] 我想用两个列表中的元素创建一个新列表。像这样: ['A', 'C', 'C', 'D'] 请注意,应该记住,任何项都可以在列表中重复多次,并且在新列表中的重复次数应与在两个列表中重复的次数相同。例如,“C”在列表_1中重复2次,在列表_2中重复3次,因此它在结果中出现2次 实现这一目标的经典方法是: import

我有两个项目清单:

list_1 = ['A', 'B', 'C', 'C', 'D']
list_2 = ['C', 'C', 'F', 'A', 'G', 'D', 'C']
我想用两个列表中的元素创建一个新列表。像这样:

['A', 'C', 'C', 'D']
请注意,应该记住,任何项都可以在列表中重复多次,并且在新列表中的重复次数应与在两个列表中重复的次数相同。例如,“C”在列表_1中重复2次,在列表_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,则数字中的数字对应数字]。有可能吗?

我认为这很简单:

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

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

print(list_3)

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

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

>>> list((Counter(list_1) & Counter(list_2)).elements())
['A', 'C', 'C', 'D']
&
将两个元素的交点视为多个集合,最小计数用于公共元素。
elements
方法以迭代器的形式返回结果中的项,因此
list
wrapper`。

阅读

试试这个:

[common for common in list_1 if common in list_2]

愉快学习…:)

允许列表理解?为什么输出中有
C
,如果计数不同?在新列表中,需要花费最少的时间重复=我们在两个列表中的内容此解决方案将无法确保每个输入外观所需的次数。谢谢!我试过了,但它在case中有错误:水果列表1=['A','B','C','C','L','C']水果列表2=['C','C','F','A','N','L','C']新的列表将是:['A','C','C','C','L','C'],但只需要3C@kjmerflist_1=['A','A'],list_2=['A']应该有list_3=['A'],您的解决方案将提供list_3=['A','A']我想我误解了这个问题。我想我们需要重复的条目。我知道条目必须重复出现在两个列表中的次数。所以列表1=['A','A','A'],列表2=['A','A']应该有列表3=['A','A']号。。这很容易,但你有错误的情况:列表1=['A','B','C','C','C','L','C']列表2=['C','C','C','F','A','N','L','C']新的列表将是:['A','C','C','C','L','C']-这里是4C但需要3C谢谢!它看起来很酷)对我来说是新的。但我需要通过生成列表来完成。。(
[common for common in list_1 if common in list_2]