从Python列表中删除重复项

Cry*_*era 6 python list

我正在尝试编写一个从列表中删除重复项的程序,但我的程序在第 5 行不断抛出错误“列表索引超出范围” if n/(sequence[k]) == 1:。我无法弄清楚这一点。我认为“k”的可能值为 0、1 和 2 是否正确?将其中任何一个作为可能索引范围之外的索引的“序列”如何?

def remove_duplicates(sequence):
    new_list = sequence
    for n in sequence:
        for k in range(len(sequence)):
            if n/(sequence[k]) == 1:
                new_list.remove(sequence[k])
    print new_list

remove_duplicates([1,2,3])
Run Code Online (Sandbox Code Playgroud)

chw*_*w21 6

我强烈建议阿卡瓦尔的回答:

list(set(your_list))
Run Code Online (Sandbox Code Playgroud)

至于为什么会出现超出范围的错误:Python 通过引用传递,即序列和 new_list 仍然指向相同的内存位置。更改 new_list 也会更改顺序。

最后,您将项目与自身进行比较,然后将其删除。所以基本上即使你使用了序列的副本,例如:

new_list = list(sequence)
Run Code Online (Sandbox Code Playgroud)

或者

new_list = sequence[:]
Run Code Online (Sandbox Code Playgroud)

它将返回一个空列表。