python基础十二之生成器进阶
生成器表达式
(满足条件的元素或其相关的操作 for 元素 in 可迭代对象 if 条件)
g = (i for i in range(10))
for i in g:
print(i)
egg_lis = ('鸡蛋%s' %i for i in range(10))
print(egg_lis)
for i in egg_lis:
print(i)
生成器取值send()
send效果在获取下一个值的时候和next相似,不同之处可以给上一个yield的位置传数据。
第一个取值必须要用__next__()来取值不能用send()
最后一个yield也不能接收外部的数据
def generator():
print('zxc')
content = yield 1
print('==='+content)
print('zxf')
yield 2
g = generator()
print(g.__next__())
# print(g.__next__())
print(g.send('good'))
生成器实例
# 计算移动平均值 def average():
total = 0
count = 0
avg = 0
while True:
num = yield avg
total += num
count += 1
avg = total / count
avg_g = average()
avg_g.__next__()
avg1 = avg_g.send(10)
avg2 = avg_g.send(20)
print(avg1, avg2)
上面的实例中avg_g.__next__()的返回值没有什么意义,只是起到了一个激活生成器的效果。为了方便多个生成器的激活,这里就可以使用预激生成器的装饰器
def init(func):
def inner(*args, **kwargs):
ret = func(*args, **kwargs)
ret.__next__()
return ret
return inner @init
def average():
total = 0
count = 0
avg = 0
while True:
num = yield avg
total += num
count += 1
avg = total / count
avg_g = average()
print(avg_g.send(10))
print(avg_g.send(20))
推导式
格式:满足条件的元素或其相关的操作 for 元素 in 可迭代对象 if 条件
各种推导式:生成器(),列表[],字典{},集合{}
1,遍历操作
2,筛选操作
列表推导式
egg_lis = ['鸡蛋%s' %i for i in range(10)]
print(egg_lis)
生成器推导式
g = (i for i in range(10))
for i in g:
print(i)
字典推导式
# 将一个字典中的key和value对调
dic = {'k1': 'v1', 'k2': 'v2'}
dic_swop = {dic[k]: k for k in dic}
print(dic_swop) # {'v2': 'k2', 'v1': 'k1'}
集合推导式
# 集合推导式 自带结果去重功能
set1 = {i for i in [1, 3, 5, 5, 6, 3, 4]}
print(set1) # {1, 3, 4, 5, 6}
python基础十二之生成器进阶的更多相关文章
- Python基础(十二) 类私有成员和保护成员
python中的protected和private python中用 _var :变量名前一个下划线来定义,此变量为保护成员protected,只有类及其子类可以访问.此变量不能通过from XXX ...
- python 基础(十二) 图片简单处理
pillow 图片处理模块 安装 pip install pillow pip是安装第三方模块的工具 缩放图片实例 from PIL import Image path = r'C:\Users\x ...
- Bootstrap <基础十二>下拉菜单(Dropdowns)
Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- 初学 Python(十四)——生成器
初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...
- 初学 Python(十二)——高阶函数
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
- Java基础十二--多态是成员的特点
Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...
- python基础知识(二)
python基础知识(二) 字符串格式化 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 print(' %s is boy'%('tom')) ----> ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
随机推荐
- Ubuntu查找通过apt命令已安装软件
方法一 apt list --installed 方法二 dpkg -l
- 【水滴石穿】ReactNativeMobxFrame
项目地址如下:https://github.com/FTD-ZF/ReactNativeMobxFrame 应该可以说的是,项目也只是一个花架子,不过底部的tab稍微改变了 我们一起来看代码 //in ...
- vue-cnodejs
感谢那些无私开源的程序员,你们是最可爱的人儿~~~~ //根app app.js <template> <div id="app"> <v-heade ...
- 2016中国银行Top100榜单发布 工行排首位
2016中国银行Top100榜单发布 工行排首位 2016-07-09 15:13:19 第一财经 2016年7月8日,中国银行业协会在京召开“<中国银行业发展报告(2016)>发布会 ...
- 小爬爬6.scrapy回顾和手动请求发送
1.数据结构回顾 #栈def push(self,item) def pop(self) #队列 def enqueue(self,item) def dequeue(self) #列表 def ad ...
- MaxCompute Mars开发指南
Mars 算法实践 人脸识别 Mars 是一个基于矩阵的统一分布式计算框架,而且 Mars 已经在 GitHub 中开源.当你看完 Mars 的介绍可能会问它能做什么,这几乎取决于你想做什么,因为 M ...
- jQuery show hide方法 二级菜单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java面向对象----Java面向对象(OOP)概念
理解面向对象 关键:让每一个对象负责执行一组相关任务 面向过程:算法第一,数据第二 面向对象:数据第一,算法第一 特点: 万物皆对象 程序是一组对象彼此之间在发送消息 每个对象都有自己的内存占用,可以 ...
- vue页面内监听路由变化
beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `this` // 因为当钩子执行前,组件实 ...
- WPF中的简单水动画
原文 https://stuff.seans.com/2008/08/21/simple-water-animation-in-wpf/ 很多年前(80年代中期),我在一家拥有Silicon Grap ...