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