博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成器 列表推导式 列表表达式
阅读量:4705 次
发布时间:2019-06-10

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

生成器:就是自己用python代码写的迭代器,生成器的本质就是迭代器。

# 函数def func1(x):    x += 1    return xfunc1(5) #函数的执行命令,并且接受函数的返回值。print(func1(5))# 生成器函数def func1(x):    x += 1    print(1111)    print(1111)    print(1111)    print(1111)    print(1111)    print(1111)    yield x    x +=2    print(2222)    yield 'alex'a = func1(1)print(a.__next__())print(a.__next__())

一个next  对应一个yield       yield将返回值给生成器对象  .__next__()

yield   和 return 比较

return 结束函数,给函数执行者返回值

yield 不会结束函数,一个next 对应一个yield  给生成器对象.__next__()返回值

 

 

生成器函数与迭代器区别。

1迭代器需要可迭代对象进行转换,可迭代对象非常占内存

2 生成器直接创建,不需要转换,从本质就节约内存

def func1():    for i in range(1000000):        yield ig1 = func1()for i in range(50):    print(g1.__next__())       #打印了0到49的数字

  

send  与 next 

send 与next一样,也是对生成器取值(执行一个yield)的方法。 send 可以给上一个yield 传值。 第一次取值永远都是next。 最后一个yield 永远也得不到send传的值。    不然就会报错

 

 

 

# def cloth1(n):#     for i in range(n+1):#         print('衣服%s号' % i)# cloth1(100000)# def cloth2(n):#     for i in range(1,n+1):#         yield '衣服%s号' % i# g = cloth2(10000)# for i in range(50):#     print(g.__next__())# for i in range(50):#     print(g.__next__())    后面取值会直接从50开始取 

列表推导式: 一行代码几乎搞定你需要的任何列表

循环模式---------[变量(加工后的变量) for 变量 in iterable]
# l1 = []# for num in range(1,101):#     l1.append(num)                 列表中有1到100的数列表推导式# l = [i for i in range(1,101)]# l2 = ['python%s期' % i for i in range(1,16)]   格式化输入 %s 替代# print([i*i for i in range(1,11)])     i 的平方

  

# 筛选模式 [变量(加工后的变量) for 变量 in iterable if 条件]# l3 = [i for i in range(1,31) if i % 2 == 0]# print(l3)# print([i for i in range(1,31) if i % 3 == 0])# print([i**2 for i in range(1,31) if i % 3 == 0])names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]print([j for i in names for j in i if j.count('e') == 2])

列表推导式

优点:一行解决

缺点:容易着迷,不易排错,不能超过三次循环,太大的数据就不要用了

列表推导式不能解决所有列表的问题,所有不要太刻意用

 

生成器表达式,把  [ ] 换成 () 即可

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/single82/p/9506274.html

你可能感兴趣的文章
【Eclipse】开发专题
查看>>
PHP中构造函数和析构函数解析
查看>>
decimal模块
查看>>
Python函数缓存
查看>>
MongoDB 客户端 MongoVue
查看>>
《IT项目管理》读书笔记(8) —— 项目人力资源管理
查看>>
mongodb 学习笔记
查看>>
大数据仓库对业务数据的几个基本要求
查看>>
POSIX信号
查看>>
Thinkphp 中间件结合Validate
查看>>
orcale => 含义
查看>>
在 Virtual Box 安装 Mac Os 并安装 Qt 开发应用
查看>>
入门django
查看>>
PDO exec() query() prepare() PDOException 事务处理
查看>>
lucene的两种分页操作
查看>>
网上找的正则验证邮箱手机等代码
查看>>
关于Linux测试题
查看>>
ACM题目————困难的串
查看>>
c++ 创建路径方法
查看>>
pythonのscrapy抓取网站数据
查看>>