Skip to main content
 首页 » 编程设计

python之非独特元素

2025年05月04日20webabcd

我正在 checkio 上做一个练习,关于编写一个函数来排除 list 中的唯一元素,并且只保留非唯一元素。我写了以下几行。

    def checkio(data):     
        for i in data: 
            if data.count(i) == 1: 
                data.remove(i)        
        return data 

然后做了下面的测试。

    checkio([1, 2, 3, 1, 3]) == [1, 3, 1, 3] 
    checkio([1, 2, 3, 4, 5]) == [] 
    checkio([5, 5, 5, 5, 5]) == [5, 5, 5, 5, 5] 
    checkio([10, 9, 10, 10, 9, 8]) == [10, 9, 10, 10, 9] 

但是第二个测试不会通过。
它返回的不是空数组[],而是[2,4]。
这是为什么? 提前感谢您的帮助!

请您参考如下方法:

解决方案:

 
def checkio(data): 
        duplicates = [] 
        for i in data: 
                if data.count(i) > 1: 
                    duplicates.append(i) 
        return duplicates 

此处,如@sp4c38所述不要删除独特的元素并修改原始列表,而是将重复项添加到新的列表。

这通过了所有测试用例:

checkio([1, 2, 3, 1, 3]) 
checkio([1, 2, 3, 4, 5]) == [] 
checkio([5, 5, 5, 5, 5]) == [5, 5, 5, 5, 5] 
checkio([10, 9, 10, 10, 9, 8]) == [10, 9, 10, 10, 9]