结论:

1.把列表解析的[]换成()得到的就是生成器表达式

2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存

3.Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。例如, sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议,所以,我们可以直接这样计算一系列值的和:

sum(x ** 2 for x in xrange(4))

而不用多此一举的先构造一个列表:

sum([x ** 2 for x in xrange(4)]) 

♥♥♥。◕‿◕。♥♥♥

一、列表生成式

 #三元表达式
name='alex'
name='egon' res='SB' if name == 'alex' else 'shuai'
print(res)
 #例子1
egg_list=[] for i in range(100):
egg_list.append('egg%s' %i)
print(egg_list) l=['egg%s' %i for i in range(100) if i > 50]
print(l)
 #例子2
l=[1,2,3,4]
s='hello' l1=[(num,s1) for num in l if num > 2 for s1 in s]
print(l1) l1=[]
for num in l:
for s1 in s:
t=(num,s1)
l1.append(t)
print(l1)
 #例子3
import os
g=os.walk('C:\\egon')
file_path_list=[]
for i in g:
# print(i)
for j in i[-1]:
file_path_list.append('%s\\%s' %(i[0],j)) print(file_path_list) g=os.walk('C:\\egon')
l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]
print(l1)

二、生成器表达式

 #例子1
l=['egg%s' %i for i in range(100)]
print(l) g=l=('egg%s' %i for i in range(10000))
print(g)
print(next(g))
print(next(g))
for i in g:
print(i)
 #例子2
f=open('a.txt')
l=[]
for line in f:
line=line.strip()
l.append(line) print(l)
f.seek(0)
l1=[line.strip() for line in f]
print(l1) f.seek(0)
g=(line.strip() for line in f)
print(g)
print(next(g))
 #例子3
f=open('a.txt')
g=(line.strip() for line in f) l=list(g)
print(l) nums_g=(i for i in range(3)) # print(sum([1,2,3,4]))
print(sum(nums_g))
 #例子4
money_l=[]
with open('b.txt') as f:
for line in f:
goods=line.split()
res=float(goods[-1])*float(goods[-2])
money_l.append(res)
print(money_l) f=open('b.txt')
g=(float(line.split()[-1])*float(line.split()[-2]) for line in f) print(sum(g)) with open('b.txt') as f:
print(sum((float(line.split()[-1])*float(line.split()[-2]) for line in f)))
 #例子5
res=[]
with open('b.txt') as f:
for line in f:
# print(line)
l=line.split()
# print(l)
d={}
d['name']=l[0]
d['price']=l[1]
d['count']=l[2]
res.append(d)
print(res)

  

最新文章

  1. Python基础-字符编码与转码
  2. php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名
  3. 微信支付curl出错及错误码解决方案
  4. 【转】PowerShell入门(七):管道——在命令行上编程
  5. 【Android Studio】No JVM installation found
  6. Demon_游戏登录界面(具备账号密码输入功能)
  7. 抽象类的基本概念------abstract
  8. java基础(8) -集合类-Collecion
  9. Kubernetes 笔记 10 Job 机器人加工厂
  10. Tomcat系列(4)——Tomcat 组件及架构详细部分
  11. java获取application.properties和application.yml配置文件信息
  12. DeveloperGuide Hive UDF
  13. openstack项目【day24】:keystone部署及操作
  14. ng/cli uses yarn as the package manager
  15. requests禁止重定向
  16. stm32cubemx学习要点记录
  17. Yahoo的Yslow23条规则
  18. roadhog 知识点
  19. 使用Handlerf发送消息或使用Handler轮询时,报错IllegalStateException:This message is already in use.;
  20. Linux 系统服务注册

热门文章

  1. 2018 ACM-ICPC World Finals - Beijing F.Go with the Flow
  2. IDEA 破解图文教程 - 2018.9 更
  3. ICPC 沈阳 Problem C
  4. 关于cisco路由器配置的一些参数
  5. We are writing to let you know we have removed your selling privileges
  6. HttpServlet 详解(基础)
  7. js 插件 issue
  8. Tempter of the Bone HDU 1010(DFS+剪枝)
  9. 实验一 MiniOS
  10. 团队项目成员与题目(本地地铁查询app)