写点什么

Python 代码阅读(第 30 篇):找到列表中的奇偶异常项

用户头像
Felix
关注
发布于: 1 小时前
Python代码阅读(第30篇):找到列表中的奇偶异常项

Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码


本篇阅读的代码实现了从输入列表中寻找奇偶异常项。

本篇阅读的代码片段来自于30-seconds-of-python

find_parity_outliers

from collections import Counter
def find_parity_outliers(nums): return [ x for x in nums if x % 2 != Counter([n % 2 for n in nums]).most_common()[0][0] ]
# EXAMPLESfind_parity_outliers([1, 2, 3, 4, 6]) # [1, 3]
复制代码


find_parity_outliers函数接收一个列表,并返回列表中的奇偶异常项。奇偶异常项指的是和列表中大多数项奇偶性质不同的项。函数使用列表推导式来逐个检查输入列表中的每一项是否为奇偶异常项。Counter中使用列表推导式和取余操作(% 2)逐个提取其输入列表每项的奇偶性质。使用collections.Counter.most_common()来获取列表中最常见的奇偶性。

class collections.Counter([iterable-or-mapping])

Counter是一个dict的子类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一样存储,它们的计数存储为值。计数可以是任何整数值,包括 0 和负数。most_common([n])Counter提供的一个方法,该方法返回一个列表,其中包含n个最常见的元素及出现次数,按常见程度由高到低排序。 如果n被省略或为Nonemost_common()将返回计数器中的所有元素。 计数值相等的元素按首次出现的顺序排序。


>>> from collections import Counter>>> Counter('abracadabra').most_common(3)[('a', 5), ('b', 2), ('r', 2)]
复制代码


[0][0]是在结果列表里面定位元素,会把最常出现的元素提取出来。


>>> Counter('abracadabra').most_common(3)[0][0]'a'
复制代码


发布于: 1 小时前阅读数: 2
用户头像

Felix

关注

没有看点,仅仅闲聊。欢迎关注“没看点” 2018.05.04 加入

欢迎关注个人公众号:没看点 个人主页:www.zhangfelix.com

评论

发布
暂无评论
Python代码阅读(第30篇):找到列表中的奇偶异常项