Python之浅谈生成器
三元表达式
a=0
b=6
print (a)if a>b else print(b)
三元表达式只能写if的双分支结构
列表推导式
print(list(i for i in range(10)))#这种写法只有list和set才有用
字典生成式
print({k:v**3 for k,v in zip([a,b,c,d],[1,2,3,4])})#不能写这种代码,可读性太差
生成器
在Python中创建迭代器最方便的技术是使用生成器。生成器的语法类似于函数,但不返回值。为了显示序列中的每一个元素,会使用yield语句。
def range(start=0,end=None,long=1):#通过生成器来实现range内置方法
if end==None:
start,end=0,start
while start<end:
yield start
start+=long
for i in range(6,10):
print(i)
注意:我们使用关键字yield而不是return来表示结果。这表明在Python中,我们正在定义一个生成器而不是一个传统的函数。在同一函数中,将yield和return语句结合起来是非法的,除非是使生成器结束执行的return语句。
生成器表达式
print(tuple(i for i in range(1000000)))
生成器表达式与列表推导式的区别就是生成器表达式输出的是元组,列表推导式输出的是列表,而元组可以减少占用空间。
匿名函数
匿名函数就是没有名字的函数,匿名需要关键字lambda
匿名函数一般不单独使用,和 filter()/map()/sorted()/列表的sort()内置方法联用
salary_dict = {
'tim': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000
}
salary_list = list(salary_dict.items())
print(max(salary_list,key=lambda i:i[1]))#求最大值
print(min(salary_list,key=lambda i:i[1]))#求最小值
print(list(filter(lambda i: i[1] < 5000, salary_list))) #筛选出工资小于5000的人
print(list(map(lambda i: i[1] + 2000, salary_list)))#每个人的工资加2000
Python之浅谈生成器的更多相关文章
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- 【python】浅谈包
python中的包可以理解为模块的集合.每个包也既可以为单包也可以有多个小包组成. Python中的package定义很简单,其层次结构与目录的层次结构相同,但是每个package必须包含一个__in ...
- 【python】浅谈encode和decode
对于encode和decode,笔者也是根据自己的理解,有不对的地方还请多多指点. 编码的理解: 1.编码:utf-8,utf-16,gbk,gb2312,gb18030等,编码为了便于理解,可以把它 ...
- Python实例浅谈之三Python与C/C++相互调用
一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...
- Python实例浅谈之五Python守护进程和脚本单例运行
一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc ...
- python itertool 浅谈迭代工具
1.概述 Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个“无限”迭代器: import itertools natuals ...
- 熬最深的夜喝最劣的酒————浅谈生成器(generator)
测试(test)def s(): print("stup1") n = "第一步" yield n # 类似于return 但是又不同于 赖克宝,剁一下,跳一下 ...
- Python之浅谈多态和封装
目录 组合 什么是组合 为什么使用组合 多态和多态性 多态 什么是多态? 多态性 好处 多态性 什么是多态性 封装 封装是什么意思? 隐藏 如何用代码实现隐藏 python 实际上是可以访问隐藏属性的 ...
- Python之浅谈继承
目录 继承 继承介绍 如何使用继承 新式类:只要继承了object类,就是新式类,再python3中,默认继承object类 经典类:没有继承object的类,就是经典类 利用继承减少代码冗余,菱形问 ...
随机推荐
- Java实现蓝桥杯VIP 算法训练 P0504
试题 算法训练 P0504 资源限制 时间限制:1.0s 内存限制:256.0MB Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的 ...
- Java实现Labeling Balls(拓扑排序的应用)
1 问题描述 给出一些球,从1N编号,他们的重量都不相同,也用1N标记加以区分(这里真心恶毒啊,估计很多WA都是因为这里),然后给出一些约束条件,< a , b >要求编号为 a 的球必须 ...
- Hive的基本介绍以及常用函数
一.Hive的简介: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. 优点: ) 操作接口采用类SQL语法,提供快速开发的能力(简单.容易上 ...
- pip常出问题的操作
pip 是一个 Python 包安装与管理工具. 以pip安装yaml为主: 1.更新pip 打开cmd命令,安装yaml包,输入pip install pyyaml,提示pip已过期 更新pip版本 ...
- 【代理】内网穿透工具 frp&frps
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发. ### frp 的作 ...
- 使用 LIKE 的模糊查询
字符串匹配的语法格式如下: <表达式1> [NOT] LIKE <表达式2> 字符串匹配是一种模式匹配,使用运算符 LIKE 设置过滤条件,过滤条件使用通配符进行匹配运算,而不 ...
- Jmeter基础002----Jmeter简单使用
一.Jmeter概述 1.概述 JMeter是Apache公司使用JAVA开发的一款开源测试工具,它的功能强大.高效,可以模拟一些高并发或多次循环等测试场景,使用方便灵活. 2.使用 安装配置java ...
- mybatis-config.xml核心文件配置
一.全局配置文件结构 configuration 配置 properties 属性:可以加载properties配置文件的信息 settings 设置:可以设置mybatis的全局属性 typeAli ...
- 对select函数的理解
对select函数的理解 1. 处理多个socket链接的方法 阻塞模式下服务端要解决多个客户链接的问题的3个思路: 每个客户端的socket对应一个内核线程,在这个线程内部进行阻塞的read 单线程 ...
- eclipse .project文件 .classpath文件的作用
.classpath文件的作用 可以参考.classpath文件的作用 .project文件的作用 确保你自己的eclipse能创建Java项目,并且正确编译运行helloworld,给eclipse ...