生成器表达式

  (满足条件的元素或其相关的操作 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基础十二之生成器进阶的更多相关文章

  1. Python基础(十二) 类私有成员和保护成员

    python中的protected和private python中用 _var :变量名前一个下划线来定义,此变量为保护成员protected,只有类及其子类可以访问.此变量不能通过from XXX ...

  2. python 基础(十二) 图片简单处理

    pillow 图片处理模块 安装 pip install pillow  pip是安装第三方模块的工具 缩放图片实例 from PIL import Image path = r'C:\Users\x ...

  3. Bootstrap <基础十二>下拉菜单(Dropdowns)

    Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...

  4. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  5. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  6. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  7. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  8. python基础知识(二)

    python基础知识(二) 字符串格式化 ​ 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 ​ print(' %s is boy'%('tom')) ----> ...

  9. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

随机推荐

  1. Spring4.x 基础知识点

    # Spring4.x 基础知识点## 第二章 快速入门- 一般情况下,需要在业务模块包下进一步按分层模块划分子包,如user\dao.user\service.viewspace\dao.views ...

  2. 2019-2-16-WPF-封装-dotnet-remoting-调用其他进程

    title author date CreateTime categories WPF 封装 dotnet remoting 调用其他进程 lindexi 2019-02-16 09:40:26 +0 ...

  3. Subsets 集合子集 回溯

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  4. Android书架实现

    转自http://blog.csdn.net/wangkuifeng0118/article/details/7944215 书架效果: 下面先看一下书架的实现原理吧! 首先看一下layout下的布局 ...

  5. iOS开发 底层抛析运行循环—— RunLoop

    http://blog.csdn.net/zc639143029/article/details/50012527 一.RunLoop基本概念 概念:程序的运行循环,通俗的来说就是跑圈. 1. 基本作 ...

  6. oracle控制何时触发审计动作

    1)By session / By Access by session对每个session中发生的重复操作只记录一次 by access对每个session中发生的每次操作都记录,而不管是否重复. 对 ...

  7. Flask 第二篇

    Flask 中的 Render Redirect HttpResponse 1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 2 ...

  8. 修改eclipse默认注释

    windows-->preference-->Java-->Code Style-->Code Templates -->Comments :注释--> ... 关 ...

  9. oracle函数 VARIANCE([distinct|all]x)

    [功能]统计数据表选中行x列的方差. [参数]all表示对所有的值求方差,distinct只对不同的值求方差,默认为all 如果有参数distinct或all,需有空格与x(列)隔开. [参数]x,只 ...

  10. 洛谷 2149 [SDOI2009]Elaxia的路线

    题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的 ...