10-8 生成器的表达式、各种推导式

egg_list = []
for i in range(6):    #列表推导式
    egg_list.append('鸡蛋%s'%i)
print(egg_list) #结果:['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5']
egg_list = ['鸡蛋%s'%i for i in range(5)] #列表推导式
print(egg_list)

列表推导式
print([i for i in range(10)])   #结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i*i for i in range(10)])    #结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

生成器表达式

g = (i for i in range(10))
print(g)    #结果:<generator object <genexpr> at 0x0221DCC0>
for i in g:
    print(i)
括号不一样,返回的值不一样===生成器表达式几乎不占用内存
 g = (i*i for i in range(10))
 g.__next__()

  

各种推导式

[每一个元素或者是与元素相关的操作 for 元素 in 可迭代类型]    ----遍历后挨个处理
[满足元素条件相关的操作 for 元素 in 可迭代类型 if 元素相关条件] ----筛选功能
print([i for i in range(30) if i%3==0]) #结果[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
print([i*i for i in range(30) if i%3==0]) #结果[0, 9, 36, 81, 144, 225, 324, 441, 576, 729]
多层嵌套
names = [['Tom','Jack','hdjseej'],
         ['Jenefer','Cheryol','eeeejjk']]
result = [name for lst in names for name in lst if name.count('e')>=2]
print(result)   #结果:['hdjseej', 'Jenefer', 'eeeejjk']
字典推导式
#1.将key与value对调
dic = {'a':10,'b':20}
reverse = {dic[k]: k for k in dic}
print(reverse)  #结果:{10: 'a', 20: 'b'}

#2.合并大小写所对应的value值,将k统一成小写
dic = {'a':10,'b':20,'A':3,'Z':4}
dic_new = {k.lower():dic.get(k.lower(),0)+dic.get(k.upper(),0) for k in dic}
print(dic_new)  #结果:{'a': 13, 'b': 20, 'z': 4}
集合推导式-----结果自动去重
sq = {x*x for x in [1,-1,2]}
print(sq)   #结果:{1, 4}

  

转载于:https://www.cnblogs.com/Cheryol/p/9752475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值