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

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

三元表达式

x,y=10,20res=x if x>y else yprint(res) #20

 

列表推导式

l=[]for x in range(5):  l.append(x*2) l=[x*2 for x in range(5)]l=[x*2 for x in range(5) if x>1]

优点:方便,改变了编程习惯,可称之为声明式编程

 

 字典生成式

#字典生成式# s1='hello'# l1=[1,2,3,4,5]# res=zip(s1,l1)# print(res)# print(list(res))# keys=['name','age','sex']# values=['egon',18,'male']# res=zip(keys,values)# print(list(res))# print(list(res))# d={}# for k,v in zip(keys,values):# d[k]=v# print(d)# keys=['name','age','sex']# values=['egon',18,'male']# d={k:v for k,v in zip(keys,values)}# print(d)info={
'name': 'egon', 'age': 18, 'sex': 'male'}keys=info.keys()# print(keys)# iter_keys=keys.__iter__()# values=info.values()# print(values)# d={k:v for k,v in zip(keys,values)}# print(d)# s={i for i in range(10)}# print(s,type(s))

 

生成器表达式

#1、把列表推导式的[]换成()就是生成器表达式g=(i for i in range(10))print(g)print(next(g))print(next(g)) with open('a.txt',encoding='utf-8') as f:    nums=(len(line) for line in f)    print(max(nums))  print(max(nums))    #报错 ,nums生成器值取完了 ValueError: max() arg is an empty sequenceprint(max(nums))        #报错 , 文件关闭 nums生成器无法取值 ValueError: max() arg is an empty sequence

 

#2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性
>>> chicken=('鸡蛋%s' %i for i in range(5))>>> chicken
at 0x10143f200>>>> next(chicken)'鸡蛋0'>>> list(chicken) #因chicken可迭代,因而可以转成列表['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',]
#3、优点:省内存,一次只产生一个值在内存中

 review

1、生成器        def func():            yield        g=func()        next(g)        x=yield    2、三元表达式        res=x if 条件 else y    3、列表推导式,字典生成式,生成器表达式        l=[表达式 for i in 可迭代对象 if 条件]        g=(表达式 for i in 可迭代对象 if 条件)        d={k:v for i in 可迭代对象 if 条件}    4、max,zip        max(可迭代对象)        生成器=zip(可迭代对象1,可迭代对象2)            g=zip('hello',[1,2,3])            # print(g)            print(list(g))

 

转载于:https://www.cnblogs.com/hanbowen/p/9177776.html

你可能感兴趣的文章
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>