本文目录一览:
Python中列表生成式和生成器的区别
列表生成式语法:
[x*x for x in range(0,10)] //列表生成式,这里是中括号
//结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(x*x for x in range(0,10)) //生成器, 这里是小括号
//结果 generator object genexpr at 0x7f0b072e6140
二者的区别很明显:
一个直接返回了表达式的结果列表, 而另一个是一个对象,该对象包含了对表达式结果的计算引用, 通过循环可以直接输出
g = (x*x for x in range(0,10))
for n in g:
print n
结果
1
4
9
16
25
36
49
64
81
当表达式的结果数量较少的时候, 使用列表生成式还好, 一旦数量级过大, 那么列表生成式就会占用很大的内存,
而生成器并不是立即把结果写入内存, 而是保存的一种计算方式, 通过不断的获取, 可以获取到相应的位置的值,所以占用的内存仅仅是对计算对象的保存
python列表推导式和生成器表达式-
列表推导式和生成器表达式以及字典推导式 通常被视为Python中函数式编程的一部分,列表推导允许您使用包含较少代码的for循环创建列表。
用[] 包围
用{} 包围
生成器表达式允许在没有yield关键字的情况下即时创建生成器。
语法和概念类似于列表推导的语法和概念:用()包围
python极简教程06:生成式和装饰器
测试奇谭,BUG不见。
这一场,主讲python的 生成式和装饰器。
目的:掌握四种生成式(列表、生成器、集合、字典),装饰器的原理和使用。
能够用一行代码,快速高效的生成数据。(这就不需要再通俗的讲解了吧)
举个例子:提取1-100之间的奇数
使用(),而不是 []
举个例子:列表元素去重
举个例子:字典kv反转
顾名思义:增强函数或类的功能的一个函数。
装饰器的作用:增强函数的功能,确切的说,可以装饰函数,也可以装饰类。
初学的你,还是太难理解?
你开视频聊天,觉得自己的颜值不在线,于是乎,你使用美颜,增强装饰自己的颜值。
对于美颜这个功能来说,你可以用,我可以用,所有人都可以用,以此来增强装饰自己的颜值。
方法一:不用语法糖@符号
方法二:采用语法糖@符号
再举个例子:计算函数时间
python解析式与生成器表达式
列表解析式List Comprehension,也叫列表推导式
语法
列表解析式是一种语法糖
语法
语法
语法
和列表解析式的区别
生成器对象
一般来说,应该多应用解析式,简短、高效。如果一个解析式非常复杂,难以读懂,要考虑拆解成for循环。
生成器和迭代器是不同的对象,但都是可迭代对象。
如果不需要立即获得所有可迭代对象的元素,在Python 3中,推荐使用惰性求值的迭代器。