Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 - Fatal编程技术网

Python 在给定列表中创建重复元素的新列表

Python 在给定列表中创建重复元素的新列表,python,python-3.x,Python,Python 3.x,我希望我的程序获取一个已经创建的列表,遍历它并检查是否有重复的元素。然后创建一个新列表,其中只包含重复的元素 def repeated_elements(data): repeats = [] for element in data: result = data.count(element) if result > 1: repeats.append(element) return data print

我希望我的程序获取一个已经创建的列表,遍历它并检查是否有重复的元素。然后创建一个新列表,其中只包含重复的元素

def repeated_elements(data):
    repeats = []
    for element in data:
        result = data.count(element)
        if result > 1:
            repeats.append(element)
       return data
print (repeated_elements([1, 2, 3, 1, 3]))#should print out [1, 3, 1, 3]
print (repeated_elements([1, 2, 3, 4, 5]))# should print out []
print (repeated_elements([5, 5, 5, 5, 5]))# should print out [5, 5, 5, 5, 5]
print (repeated_elements([10, 9, 10, 10, 9, 8]))# should print out [10, 9, 10, 10, 9]

程序最终打印出起始集

首先,您返回的是数据而不是重复数据,因此它最终打印出起始集。 第二,在for循环中缩进return语句将在循环的第一次迭代中返回结果。如果你解决了这个问题,代码就会正常工作

def repeated_elements(data):
    repeats = []
    for element in data:
        result = data.count(element)
        if result > 1:
            repeats.append(element)
    return repeats

通过使用列表理解表达式实现此目的的更好方法如下:

>>> from collections import Counter
>>> my_list = [1, 2, 3, 1, 3]

>>> my_counter = Counter(my_list)
>>> [i for i in my_list if my_counter[i]>1]
[1, 3, 1, 3]
那么:

>>> lst = [1, 2, 3, 1, 3]
>>> repeated = [i for i in lst if lst.count(i) > 1]
[1, 3, 1, 3]

您正在重新调整传递给它的相同数据,而不做任何修改,也许您的意思是返回
重复
,而不是
数据
。类似于本文