我希望我的程序获取已创建的列表,查看它并检查重复的任何元素。然后使用重复的元素创建一个新列表。
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]
程序最终打印出起始组
答案 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]