Python中的列表解析和生成器表达式

                  Python中的列表解析和生成器表达式

                                    作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.列表解析案例

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 old ="hello"
 8 #传统方式解决转换字母的方法
 9 list_1 = []
10 for i in old:
11     res = i.upper()
12     list_1.append(res)
13 print(list_1)
14 #列表解析方式
15 res1 = [i.upper() for i in old]
16 print(res1)
17 
18 list_2 = [10,20,30,40,50]
19 #传统方式计算列表元素的二次方
20 list_new = []
21 for i in list_2:
22     res2 = i ** 2
23     list_new.append(res2)
24 print(list_new)
25 #列表解析方式
26 res2 = [i**2 for i in  list_2 ]
27 print(res2)
28 
29 list_3 = [1,31,45, 62,57,21]
30 #传统方式将列表中大于30小于50的值取出来
31 MaxNum = []
32 for i in  list_3:
33     if  i >30 and i<50:
34         MaxNum.append(i)
35 print(MaxNum)
36 #列表解析方式
37 res = [ i for i in list_3 if  i > 30 and i<50]
38 print(res)

二.生成器表达式

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 
 9 g = (i for i in range(1,999999999999999999999999999999999))
10 print(g)
11 print(g.__next__())         #注意,生成器的表达式的__next__()方法,也可以直接调用next函数哟!他们的效果是等效的。生成器很明显逼列表表达式要快!
12 print(next(g))
13 
14 
15 l = [i for i in range(1,9999999)]       #速度相比生成器而言,简直太慢了。
16 print(l)

  补充:三元运算表达式可参考:http://www.cnblogs.com/yinzhengjie/p/8463774.html

原文地址:https://www.cnblogs.com/yinzhengjie/p/8476694.html