gpt4 book ai didi

Python list(set(list(...)) 删除重复项

转载 作者:太空狗 更新时间:2023-10-30 02:09:58 24 4
gpt4 key购买 nike

list(set(some_list))

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

(经过编辑以解决一些评论......之前可能过于简洁)。

具体而言,

  • 是否至少在效率(主要是速度,还有内存)方面与编写自己的算法具有可比性?这显然是最简洁的代码
  • 可靠吗?它会在任何情况下中断吗? (已经提到了一个......列表项需要是可散列的)
  • 有没有更符合 Python 风格的方法?

最佳答案

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

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

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

编辑:从 Python 3.7(或 3.6,如果你信任的话)开始,没有必要使用 OrderedDict;常规 dict 具有保留插入顺序的属性。所以你可以重写上面的内容:

list({k: None for k in some_list}.keys())

如果元素不可哈希但可以排序,您可以使用 itertools.groupby 删除重复项:

list(k for k,g in itertools.groupby(sorted(some_list)))

编辑:上面的内容可以写成列表推导式,有些人可能认为它更像 Pythonic。

[k for k,_ in itertools.groupby(sorted(some_list))]

关于Python list(set(list(...)) 删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com