list(set(some_list))

从列表中删除重复项的好方法? (如果重要的话,Python 3.3)

(编辑以解决一些评论......之前可能太简洁了)。

具体来说,
  • 至少在效率(主要是速度和内存)方面具有可比性,如果不比编写自己的算法更好的话;这显然是最简洁的代码
  • 可靠吗?任何情况下它会破裂? (已经提到了一个......列表项需要是可散列的)
  • 有没有更 Pythonesque 的方法?
  • 最佳答案

    您展示的方法可能是最短且最容易理解的;这将使大多数定义成为 Pythonic。

    如果需要保留列表的顺序,可以使用 collections.OrderedDict 而不是 set :

    list(collections.OrderedDict((k, None) for k in some_list).keys())
    

    如果元素不可散列但可以排序,则可以使用 itertools.groupby 删除重复项:
    list(k for k,g in itertools.groupby(sorted(some_list)))
    

    10-08 19:25