Python中的列表解析和生成器表达式
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.列表解析案例
#!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#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/
#EMAIL:y1053419035@qq.com old ="hello"
#传统方式解决转换字母的方法
list_1 = []
for i in old:
res = i.upper()
list_1.append(res)
print(list_1)
#列表解析方式
res1 = [i.upper() for i in old]
print(res1) list_2 = [10,20,30,40,50]
#传统方式计算列表元素的二次方
list_new = []
for i in list_2:
res2 = i ** 2
list_new.append(res2)
print(list_new)
#列表解析方式
res2 = [i**2 for i in list_2 ]
print(res2) list_3 = [1,31,45, 62,57,21]
#传统方式将列表中大于30小于50的值取出来
MaxNum = []
for i in list_3:
if i >30 and i<50:
MaxNum.append(i)
print(MaxNum)
#列表解析方式
res = [ i for i in list_3 if i > 30 and i<50]
print(res)
二.生成器表达式
#!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :yinzhengjie
#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/
#EMAIL:y1053419035@qq.com g = (i for i in range(1,999999999999999999999999999999999))
print(g)
print(g.__next__()) #注意,生成器的表达式的__next__()方法,也可以直接调用next函数哟!他们的效果是等效的。生成器很明显逼列表表达式要快!
print(next(g)) l = [i for i in range(1,9999999)] #速度相比生成器而言,简直太慢了。
print(l)
补充:三元运算表达式可参考:http://www.cnblogs.com/yinzhengjie/p/8463774.html