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

时间:2022-02-26 19:16:20

                  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

相关文章