从列表中获取唯一值的有趣代码

说给出一个列表s = [2,2,2,3,3,3,4,4,4]

我看到以下代码用于从s获取唯一值:

unique_s = sorted(unique(s))

其中unique的定义为:

def unique(seq): 
    # not order preserving 
    set = {}
    map(set.__setitem__, seq, []) 
    return set.keys()

我只是想知道这个和刚做列表(set(s))之间是否有任何区别? 两者都导致具有相同值的可变对象。

我猜这个代码更快,因为在类型转换的情况下它只循环一次而不是两次?

采纳答案:

您应该使用您描述的代码:

list(set(s))

这适用于从2.4(我认为)到3.3的所有Pythons,简洁,并以易于理解的方式使用内置函数。

如果set不是内置函数,那么函数unique似乎可以工作,这对于Python 2.3来说是正确的。 Python 2.3相当古老(2003)。 Python 3.x系列的unique功能也被打破,因为dict.keys返回Python 3.x的迭代器。

author: dietrich-epp

参考更多解答: An interesting code for obtaining unique values from a list ,转载请保留出处从列表中获取唯一值的有趣代码及作者信息

Statement: We respect knowledge and authors. Since the content comes from the Internet and is intended for scientific research, any reprinters should retain the author's signature and origin. If you are the author of the content and feel in dispute, please contact email: 1076545519@qq.com. We will find out the situation and deal with it in time. We sincerely thank the author for his hard work.


更多:python