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

时间:2017-01-18 19:33:22

标签: 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 (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]

程序最终打印出起始组

3 个答案:

答案 0 :(得分:3)

通过将collections.Counter列表理解表达式一起使用,可以更好地实现此目的:

>>> 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]

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

怎么样:

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