是否有更有效的方法来删除重复的整数

时间:2015-12-06 14:13:08

标签: python performance python-3.x

我正在编写一个函数来删除列表中的重复整数,但我认为我不是最有效的方法。有什么建议?

def remove_dups(items):
    new_list = sorted(items)
    i_postion = 0
    if len(new_list) > 1:
        for i in new_list:
            counter = 1
            while counter < len(new_list):
                if i_postion + counter < len(new_list):
                    if new_list[i_postion] == new_list[i_postion + counter]:
                        new_list.remove(new_list[i_postion + counter])
                counter += 1
            i_postion += 1

        #A check if the list is only one number multiple times
        if new_list[0] == new_list[1]:
            new_list.remove(new_list[1])
    else:
        return(new_list)

    return(new_list)

1 个答案:

答案 0 :(得分:1)

如果您不需要订单且列表L的所有元素都是不可变的,请使用集合:

L = [3, 4, 5, 4, 2, 3, 5]
>>> res = list(set(L))     

如果您需要保留订单:

res = []
seen = set()
for ele in L:
    if ele in seen:
        continue
    res.append(ele)
    seen.add(ele)

>>> res
[3, 4, 5, 2]