本文阅读的代码实现了过滤列表中不重复值的功能。本文阅读的代码片段来自30-seconds-of-python。filter_uniquefromcollectionsimportCounterdeffilter_unique(lst):返回[itemforitem,countinCounter(lst).items()ifcount>1]#EXAMPLESfilter_unique([1,2,2,3,4,4,5])#[2,4]函数使用collections.Counter函数对列表进行计数,通过列表推导过滤掉不唯一的值(过滤掉计数大于1的值)。collections.Counter类collections.Counter([iterable-or-mapping])Counter是dict的子类,用于对可哈希对象进行计数。它是一个集合,其中元素像字典键一样存储,它们的计数存储为值。count可以是任何整数值,包括0和负数。它接受一个可迭代对象并计算它的元素。它的成员函数items()将返回字典键值对的新视图。结合collections.Counter,上面代码中的Counter(lst).items()将列表转换为(element,count)对。列表推导式列表推导式提供了一种更简单的创建列表的方法。一个常见的用法是对序列或可迭代对象的每个元素应用一些操作,然后使用结果创建一个列表,或者创建一个满足特定条件的元素子序列。列表推导的结构如下,由一对方括号括起来:一个表达式,后跟一个for子句,再后跟零个或多个for或if子句。结果将是通过根据以下for和if子句的内容评估表达式而获得的新列表。上面的filter_unique可以等价写成:fromcollectionsimportCounterdeffilter_unique(lst):temp_list=[]foritem,countinCounter(lst).items():ifcount>1:temp_list.append(item)returntemp_list#EXAMPLESfilter_unique([1,2,2,3,4,4,5])#[2,4]filter_non_uniquefromcollectionsimportCounterdeffilter_non_unique(lst):return[itemforitem,countinCounter(lst).items()如果count==1]#EXAMPLESfilter_non_unique([1,2,2,3,4,4,5])#[1,3,5]filter_non_unique类似于上面的代码,作用是过滤掉非唯一值在列表中。
