码迷,mamicode.com
首页 > 编程语言 > 详细

python(列表推导式和生成器表达式)

时间:2018-10-13 02:48:59      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:条件   col   ali   nbsp   style   访问   eva   统一   列表   

从母鸡下蛋的故事讲起

1 老母鸡 = (鸡蛋%s%i for i in range(10))
2 print(老母鸡)
3 forin 老母鸡:
4     print(蛋)
5 g = (i*i for i in range(10))
6 for i in g:
7     print(i)

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

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

③Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。

  例如sum函数是python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议。

1 sum(i*2 for i in range(4))

1.列表推导式

 例一:30以内所有能被3整除的数  

1 # 列推导式
2 # [满足条件的元素相关的操作 for 元素 in  可迭代数据类型 if 元素相关的条件]
3 # 30以为所有能被3整除的数字
4 print([i for i in range(30) if i%3 == 0]) # 完整的列表推导式

例二:30以内所有能被3整除的数的平方

1 # 30以为所有能被3整除的平方
2 print([i*i for i in range(30) if i%3 == 0]) # 完整的列表推导式

例三:找到嵌套列表中名字包含‘e’的所有名字

1 # 找到嵌套列表中名字中含有‘e‘的所有名字
2 names = [[Tom,Billy,Jefferson,Andrew,Wesley,Steven,Joe],
3         [Alice,Jill,Ana,Wendy,Jennifer,Sherry,Eva]]
4 ret = [name for lst in names for name in lst if name.count(e) == 2]
5 print(ret)

2.字典推导式

例一:将一个字典的key和value对调

1 # 将一个字典的key和value对调
2 mcase = {a:10,b:34}
3 mcase_frequency = {mcase[k]:k for k in mcase}
4 print(mcase_frequency)

例二:合并大小写对应的value值,讲key统一成大写

1 # 合并大小写对应的value值,将key统一成小写
2 # {‘a‘:10+7,‘b‘:34,‘z‘:3}
3 mcase = {a:10,b:34,A:7,Z:3}
4 mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0) for k in mcase}

3.集合推导式

例子:计算列表中每个值的平方,自带去重复的功能

1 # 集合推导式 自带去重功能
2 squared = {x**2 for x in [1,-1,2]}
3 print(squared)

 

python(列表推导式和生成器表达式)

标签:条件   col   ali   nbsp   style   访问   eva   统一   列表   

原文地址:https://www.cnblogs.com/shine-rainbow/p/9781096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!