是
list(set(some_list))
Run Code Online (Sandbox Code Playgroud)
从列表中删除重复项的好方法?(如果重要的话,Python 3.3)
(编辑以解决一些评论......之前可能太简洁了)。
具体来说,
您展示的方法可能是最短且最容易理解的;这将使大多数定义成为 Pythonic。
如果需要保留列表的顺序,可以使用collections.OrderedDict代替set:
list(collections.OrderedDict((k, None) for k in some_list).keys())
Run Code Online (Sandbox Code Playgroud)
编辑:从 Python 3.7(或 3.6,如果您信任)开始,没有必要使用OrderedDict; 常规dict共享保留广告订单的属性。所以你可以重写上面的:
list({k: None for k in some_list}.keys())
Run Code Online (Sandbox Code Playgroud)
如果元素不可散列但可以排序,则可以使用itertools.groupby删除重复项:
list(k for k,g in itertools.groupby(sorted(some_list)))
Run Code Online (Sandbox Code Playgroud)
编辑:以上可以写成列表理解,有些人可能认为它更像 Pythonic。
[k for k,_ in itertools.groupby(sorted(some_list))]
Run Code Online (Sandbox Code Playgroud)