python 之 推导式

 推导式 : 英文 comprehension

 支持推导式的有列表list      字典dict      集合set      注意元组没有 推导式,如果你那样去写,他会变成一个generator生成器对象


 推导式会让代码更加简洁,易懂,更加pythonic



列表:


 [       expression         for   .....   if .....  ]         #生成了一个列表对象


 其中:expression  是加入到列表中的元素的表达式 , 后面的for   if  则是对这个表达式进行重复和筛选的语句

#!/usr/bin/env python3
#coding:utf-8



li1 = [1 for i in range(5)]    

print(li1)    #[1, 1, 1, 1, 1]



li2 = [i for i in range(1,11) if i%2==0]

print(li2)    #[2, 4, 6, 8, 10]



li3 = [char.upper() for char in 'hello']
print(li3)   #['H', 'E', 'L', 'L', 'O']



li4 = [i*i for i in range(10)]

print(li4)   #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


li5 = [(m,n) for m in [1,2,3] for n in "abc"]
print(li5)
#[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]


集合的推导式和列表一样,只不过集合或过滤掉重复 的元素




字典:

#!/usr/bin/env python3
#coding:utf-8

s = 'hello'

#字符串中每个字符出现的次数 char : times 
d1 = {char:s.count(char) for char in s }
print(d1)
#这个字典在生成的时候发生了键的覆盖:'hello' 中'l' 出现了2次
#改进:

d2 = {char:s.count(char) for char in set(s)}
print(d2)









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值