从列表中删除唯一元素

发布于 2021-01-29 17:33:40

我在解决下一个问题时遇到了一些问题:

我们有一个元素(整数)列表,我们应该返回仅包含该列表中非唯一元素的列表。我认为在不更改列表顺序的情况下,最好的方法是删除或删除所有唯一元素。

请注意,我才刚刚开始学习python,并且只想要最简单的解决方案。

这是我的代码:

def checkio(data):
    for i in data:
        if data.count(i) == 1:    #if element seen in the list just ones, we delet this el
            ind = data.index(i)
            del data[ind]
    return data
关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    通过反向遍历列表可以使您的功能正常工作:

    def checkio(data):
        for index in range(len(data) - 1, -1, -1):
            if data.count(data[index]) == 1:
                del data[index]
        return data
    
    print(checkio([3, 3, 5, 8, 1, 4, 5, 2, 4, 4, 3, 0]))
    [3, 3, 5, 4, 5, 4, 4, 3]
    print(checkio([1, 2, 3, 4]))
    []
    

    之所以有效,是因为它只删除列表中已被迭代的部分中的数字。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看