生成器表达式

  (满足条件的元素或其相关的操作 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. php is_null、empty、isset的区别

    isset 判断变量是否已存在 empty 判断变量是否为空或为0 is_null 判断变量是否为NULL 变量 empty is_null isset $a=”” true false true $ ...

  2. The 16th UESTC Programming Contest Final 游记

    心情不好来写博客. 为了满足ykk想要气球的愿望,NicoDafaGood.Achen和我成功去神大耍了一圈. 因为队名一开始是LargeDumpling应援会,然后队名被和谐,变成了学校的名字,顿时 ...

  3. pandas使用手册

    工欲善其事必先利其器,在使用Python做数据挖掘和数据分析时,一大必不可少的利器就是Pandas库了.pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,其纳入了大量库 ...

  4. JQuery-- 链式编程、静态函数,自己制作jQuery插件

    一.链式编程 为什么jQuery运行链式编程 ,让我们的代码(方法)连续不间断书写(连续调用)其实主要还是jQuery很多的函数执行完毕之后,都会返回一个jQuery对象 因为获取操作的时候,会返回获 ...

  5. PHP学习(mysqli函数)

    php是一种运行在服务器端的程序语言,用于生产动态网页内容.特点:开源,简单,易上手,跨平台(windows,linux),占用资源少,尤其适合中小型应用开发.(微博,微信,论坛等等)一,搭建软件环境 ...

  6. LintCode刷题笔记-- Update Bits

    标签: 位运算 描述: Given two 32-bit numbers, N and M, and two bit positions, i and j. Write a method to set ...

  7. docker在windows下的安装

    Docker for Windows会默认包含两个引擎containers(linux和windows) 1. 下载Docker for Windows,https://docs.docker.com ...

  8. 运行docker容器镜像2(指定容器启动时启动的脚本)

    docker中启动容器有以下两种情况. 第一种是通过 # docker run containerid 启动一个容器. 第二种是重新启动已经关闭的容器. # docker start containe ...

  9. hdu5441 并查集 长春网赛

    对于每次询问的大的值,都是从小的值开始的,那就从小到大处理,省去很多时间,并且秩序遍历一遍m; 这题cin容易超时,scanf明显快很多很多.G++又比C++快; //这代码scanf400+,cin ...

  10. Libevent:6辅助函数以及类型

    在头文件<event2/util.h>中定义了许多有用的函数和类型来帮助实现可移植的程序.Libevent在内部使用这些类型和函数. 一:基本类型 evutil_socket_t 除了Wi ...