1.列表生成式
#ListComprehension.py
'''
描述:熟悉列表生成式的用法
作者:Dragon
时间:2020年1月23日09:34:02
功能:list()生成式能够让代码更为简洁,但是缺点是占用内存较大
因此,为了解决生成式占用内存容量的问题,推出了生成器
注意事项:
1.list()函数瞎用!误以为是生成式用来创建列表的工具
list()函数的功能:将元组转化成列表
2.生成式的用法:直接在外面加[]
3.生成器的用法:直接在外面用()
'''
#普通列表的创建
l1=[1,2,3,4,5,6,7,8,9]
print(l1) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
#使用列表生成式创建,使用[]创建
l2=[range(1,10)]
print(l2) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
#使用for-in循环#
l3=[x*x for x in range(1,10)]
print(l3) #[1, 4, 9, 16, 25, 36, 49, 64, 81]
#使用for-in循环,并加上if语句,生成偶数项
l4=[x*x for x in range(1,10) if x%2==0]
print(l4) #[4, 16, 36, 64]
#在list()中使用双层循环:两个字符组合
l5=[m+n for m in 'abc' for n in '123']
print(l5) #['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
2.列表生成器
- 作用:使用生成式的时候,由于机器的容量是有限的,创建列表会受到内存限制,因此推出生成器来创建列表
- 前提:列表元素可以按照某种算法推出来,那么就不必创建完整的list,从而节约出大量的空间,这种一边循环一遍计算的机制,称为生成器
- 使用:和生成式一样,不过外面不是方括号[],而是圆括号()
- 打印生成器的元素:next()和for循环迭代对象
#ListGenerator.py
'''
描述:熟练掌握生成器的使用方法
作者:Dragon
时间:2020年1月23日09:57:23
'''
#使用生成器创建列表
l1=(x for x in range(1,10))
print(l1) #这样打印的是内存地址:<generator object <genexpr> at 0x00347258>
#使用for循环打印
for elem in l1:
print(elem,end=",")
print()
#使用next打印,next()中不放下标,放迭代器对象
#l1.next()