没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
2页
文章目录一、三元表达式二、列表生成式(1)列表生成式语法(2)列表生成式案例(3)字典生成式案例(4)集合生成式案例三、生成器生成式 一、三元表达式 三元表达式是python为我们提供的一种简化代码的解决方案,语法如下 res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值 二、列表生成式 (1)列表生成式语法 列表生成式是python为我们提供的一种简化代码的解决方案,用来快速生成列表,语法如下: list1 = [value for item in iterable if condition] # for循环,满足conditon条件的,就会把value append
资源推荐
资源详情
资源评论
python基础(十七):三元表达式、列表生成式、生成器生成基础(十七):三元表达式、列表生成式、生成器生成
式式
文章目录文章目录一、三元表达式二、列表生成式(1)列表生成式语法(2)列表生成式案例(3)字典生成式案例(4)集合生成式
案例三、生成器生成式
一、三元表达式一、三元表达式
三元表达式是python为我们提供的一种简化代码的解决方案,语法如下
res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值
二、列表生成式二、列表生成式
((1)列表生成式语法)列表生成式语法
列表生成式是python为我们提供的一种简化代码的解决方案,用来快速生成列表,语法如下:
list1 = [value for item in iterable if condition] # for循环,满足conditon条件的,就会把value append到本列表中。看过我前面博客的都应该知道iterable代表
一个可迭代对象。
不仅仅有列表生成式,与列表生成方法类似的还有字典生成式、集合生成式、
((2)列表生成式案例)列表生成式案例
list1 = ['lxx','hxx','uxx','huahua'] list2 = [ i.upper() for i in list1 if i.endswith('xx') ] print(list2) # 执行结果:['LXX', 'HXX', 'UXX']
((3)字典生成式案例)字典生成式案例
keys = ['华晨宇','吴晋丞','爱根','dsb'] dic0 = [ key:None for key in keys if key != 'dsb' ] print(dic0) # 执行结果:{'华晨宇': None, '吴晋丞': None, '爱根': None}
tuple1 = (['华晨宇',30],['吴晋丞',20],['爱根',28],['dsb',10])
dic1 = { k:v for k,v in list1 if k != 'dsb' }
print(dic1) # 执行结果:{'华晨宇': 30, '吴晋丞': 20, '爱根': 28}
((4)集合生成式案例)集合生成式案例
keys = ['华晨宇','吴晋丞','爱根','dsb'] set1 = { key for key in keys } # 默认识别成字典,因为没有k,因此识别成集合
print(set1,type(set1)) # 执行结果:{'吴晋丞', '爱根', 'dsb', '华晨宇'}
三、生成器生成式三、生成器生成式
创建一个生成器对象有两种方式,一种是调用带yield关键字的函数,另一种就是生成器生成式,与列表生成式的语法格式相同,只需
要将[]换成(),即:
注意:有人可能会认为这不是元组生成式吧,其实不然,元组、字符串是不可变类型,没有append方法,因此不可变类型没有生
成式。
语法:
g =(expression for item in iterable if condition)
对比列表生成式返回的是一个列表,生成器生成式返回的是一个生成器对象
>>> [x**2 for x in range(3)] #这里是x的平方
[0, 1, 4] >>> g=(x*x for x in range(3)) #x乘x
>>> g
<generator object at 0x101be0ba0>
对比列表生成式一下产生全部值来说,生成器生成式的优点自然是节省内存(调用一次才产生一个值在内存中)
>>> next(g)
0
>>> next(g)
1
>>> next(g)
4
>>> next(g) #抛出异常StopIteration
如果我们要读取一个大文件的字节数,应该基于生成器生成式的方式完成:
with open('db.txt','rb') as f: #也可以改成t模式,计算字符数
nums=(len(line.strip()) for line in f) # 去掉每行的空格,再计算字节数
total_size=sum(nums) # 依次执行next(nums),然后累加到一起得到结果=
print(total_size)
注意:sum函数,传的必须是一个可迭代对象,比如字典、列表、元组、集合。文件对象不行,因为文件对象里面的内容要么是字符
要么是字节,不是数字,上面也是用了len函数转变成了对数字的求和。无论是那个可迭代对象,都要求求和的内容只能是数字,不能是字
符串,即是'1'都不行。
资源评论
weixin_38688145
- 粉丝: 2
- 资源: 963
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功