Python代码阅读(第8篇):列表元素逻辑判断
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码
本篇阅读的三份代码的功能分别是判断列表中的元素是否都符合给定的条件;判断列表中是否存在符合给定的条件的元素;以及判断列表中的元素是否都不符合给定的条件。
本篇阅读的代码片段来自于30-seconds-of-python。
every
def every(lst, fn=lambda x: x):
return all(map(fn, lst))
# EXAMPLES
every([4, 2, 3], lambda x: x > 1) # True
every([1, 2, 3]) # True
every用于判断列表lst中的元素是否都符合给定的判断条件fn。
代码中首先使用map返回一个迭代器,该迭代器会将判断条件fn应用于所有的列表元素上。然后使用all函数判断迭代器中的元素是否都为True。
all(iterable) 接收一个可迭代对象,如果这个对象中的所有元素都为True,则函数返回True。注意,当该对象为空时,也返回True。该函数等价于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
some
def some(lst, fn=lambda x: x):
return any(map(fn, lst))
# EXAMPLES
some([0, 1, 2, 0], lambda x: x >= 2 ) # True
some([0, 0, 1, 0]) # True
some用于判断列表lst列表中是否存在符合给定的条件fn的元素。
代码中首先使用map返回一个迭代器,该迭代器会将判断条件fn应用于所有的列表元素上。然后使用any函数判断迭代器中是否至少有一个元素为True。
any(iterable) 接收一个可迭代对象,如果这个对象中有任一元素为True,则函数返回True。注意,当该对象为空时,返回False。该函数等价于:
def any(iterable):
for element in iterable:
if element:
return True
return False
none
def none(lst, fn=lambda x: x):
return all(not fn(x) for x in lst)
# EXAMPLES
none([0, 1, 2, 0], lambda x: x >= 2 ) # False
none([0, 0, 0]) # True
none用于判断列表lst中的元素是否都不符合给定的判断条件fn。
代码中首先使用生成器表达式生成一个生成器,该生成器会将判断条件not fn应用于所有的列表元素上。然后使用all函数判断迭代器中的元素是否都为True。
lst = [0, 1, 2, 0]
def fn(x):
return x >= 2
type(not fn(x) for x in lst) # <class 'generator'>
Python代码阅读(第8篇):列表元素逻辑判断的更多相关文章
- Python代码阅读(第10篇):随机打乱列表元素
本篇阅读的代码实现了随机打乱列表元素的功能,将原有列表乱序排列,并返回一个新的列表(不改变原有列表的顺序). 本篇阅读的代码片段来自于30-seconds-of-python. shuffle fro ...
- Python代码阅读(第11篇):展开嵌套列表
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了展开嵌套列表的功能,将一个嵌套的list展开成一个一维list(不改变原有列表的顺序). 本篇阅读的代 ...
- Python代码阅读(第12篇):初始化二维数组
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了二维数组的初始化功能,根据给定的宽高初始化二维数组. 本篇阅读的代码片段来自于30-seconds-o ...
- Python代码阅读(第21篇):将变量名称转换为蛇式命名风格
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现将变量名称转换为蛇式命名风格(snake case)的功能. 本篇阅读的代码片段来自于30-second ...
- python基础一 ------如何统计一个列表元素的频度
如何统计一个列表元素的频度 两个需求: 1,统计一个随机序列[1,2,3,4,5,6...]中的出现次数前三的元素及其次数 2,统计一片英文文章中出现次数前10 的单词 两种方法: 1,普通的for循 ...
- Python代码阅读(第2篇):数字转化成列表
本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项. 本篇阅读的代码片段来自于30-seconds-of-python. digitize def d ...
- Python代码阅读(第1篇):列表映射后的平均值
本篇阅读的代码实现了将列表进行映射,并求取映射后的平均值. 本篇阅读的代码片段来自于30-seconds-of-python. average_by def average_by(lst, fn=la ...
- python学习(五)之列表元素的积
前几天,学完python的列表之后,我们老师留了一道关于列表的题目.几天后,老师讲解习题,很荣幸成为被老师点名讲解自己代码的其中之一下面把我的想法分享一下. 描述一个由n(n>1)个数字组成的列 ...
- Python 中 如何将两个列表元素一一对应成字典
使用python的 zip函数 和强大的集合操作可以方便的将两个list元素一一对应转换为dict,如下示例代码: names = ['n1','n2','n3'] values = [1,2,3] ...
随机推荐
- Windows10 Dev - Background Execution
The Universal Windows Platform (UWP) introduces new mechanisms, which allow the applications to perf ...
- Navicat查询出的数据有时候不能更改?
Navicate查出数据只读,一种情况是查询没带出主键(唯一索引),无法更新数据
- 关于Ubuntu18.04 linux系统使用搜狗输入法 出现乱码
解决: 执行下面的命令即可!无需重启系统 killall fcitx
- BeanUtils中的自动类型转换(二)
javabean package entity; import java.util.Date; /** * 一个测试用: * student,javaBean * @author mzy * 一个标准 ...
- Linux centos 安装 mysql 5.7
一.mysql下载 1.方式一(简单粗暴) 直接在linux 目录下:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-l ...
- LVS本地实验环境搭建
文中实验需要使用以下软件: CentOS的镜像 Virtual Box GNS3 0.实验前的准备工作 0.1.修改yum源 为了方便安装软件,我们设置yum源为公司yum源 1.直接复制公司机器上的 ...
- Seq2Seq sequence-to-sequence模型 简介
Sequence-to-sequence (seq2seq) 模型. 突破了传统的固定大小输入问题框架 开创了将DNN运用于翻译.聊天(问答)这类序列型任务的先河 并且在各主流语言之间的相互翻译,和语 ...
- MySQL授权认证
• MySQL-权限系统介绍 • 权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除等数据库操作的权限 • 不能明确的指定拒绝某个用户的连接 • 权限控制(授权与回收)的执行语句包括 ...
- Java网络编程之TCP
Java网络编程之TCP TCP主要需要两个类:Socket和ServerSocket,Socket是客户端连接服务器时创建,参数需要指定服务器的ip和端口,ServerSocket是服务器端创建 ...
- PXE预启动执行环境
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并 ...