博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 生成器函数
阅读量:6875 次
发布时间:2019-06-26

本文共 1626 字,大约阅读时间需要 5 分钟。

从生成器中取值的方法

  next

  for循环

  数据类型的强制转换 缺点:占内存

生成器函数的进阶

send的使用效果

def generator():    print(123)    content = yield 1    print('=====',content)    print(456)    yield 2g = generator()ret  = g.__next__()print('***',ret)ret = g.send('hello')print('***',ret)

123

*** 1
===== hello
456
*** 2

  send获取下一个值的效果和next基本一致

  只是在获取下一个之的时候,给上一个之的位置传递一个数据

使用send的注意事项

  第一次使用生成器的时候,是用next获取下一个值

  最后一个yield不能接受外部的值

yield from

def gen1():    for c in 'AB':        yield c    for i in range(3):        yield iprint(list(gen1()))def gen2():    yield from 'AB'    yield from range(3)print(list(gen2()))

从一个容器中取值,集体返回  可以一个一个接收

列表推导式

g = (i*i for i in range(10))for i in g:    print(i)

效果是打印出十以内的每个数的平方

names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]print([name for lst in names for name in lst if name.count('e') >= 2])

['Jefferson', 'Wesley', 'Steven', 'Jennifer']

找到嵌套列表中名字含有两个‘e’的所有名字

生成器表达式

g = [i*i for i in range(30) if i%3==0]print(g)

在列表中打印出能整除三的数的平方

 列表推导式和生成器表达式的区别

  括号不一样

  返回的值不一样===几乎不占用内存

各种推导式:生成器  列表   字典   集合

字典

合并大小写对应的value值,将k统一成小写

mcase = {
'a':10,'b':34,'A':7,'Z':3}mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0) for k in mcase.keys()}print(mcase_frequency)

{'a': 17, 'z': 3, 'b': 34}

将一个字典的key和value对调

mcase = {
'a':10,'b':34,'A':7,'Z':3}mcase_frequency = {mcase[k]: k for k in mcase}print(mcase_frequency)

{10: 'a', 3: 'Z', 34: 'b', 7: 'A'}

集合

计算列表中每个值的平方,自带去重功能

squared = {x**2 for x in [1,-1,2]}print(squared)

{1, 4}

  它们都有遍历操作和筛选操作

转载于:https://www.cnblogs.com/GrandDarkness/p/8185340.html

你可能感兴趣的文章
斐波那契数列 二进制数列
查看>>
读书笔记--SQL必知必会01--了解SQL
查看>>
三:Ionic Framework开发Android应用
查看>>
解析函数的反函数也是解析函数
查看>>
Elementary Methods in Number Theory Exercise 1.4.24,1.4.25,1.26,1.27,1.28
查看>>
陶哲轩实分析定理17.3.8 (二)
查看>>
JVM监控配置及Tomcat配置
查看>>
Untiy3D按方向键获取值
查看>>
20、AngularJs知识点总结 part-2
查看>>
[转载]项目风险管理七种武器-长生剑
查看>>
第10件事 向优秀产品学习的学问
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>
C#线程
查看>>
C#中的?和??,null和Nullable
查看>>
7-Python与设计模式--适配器模式
查看>>
你真的了解隔离霜吗
查看>>
测试Hadoop2.7.1
查看>>
解决 升级xcode8 后 连接手机出现Could not connect to lockdownd. Exiting.
查看>>
求最小周期串
查看>>
PHP教程
查看>>