python3中生成器和列表推导式的优点和缺点
2019-02-20 本文已影响0人
nice生活
列表推导式
优点:如果生成列表的方式不太复杂,这是建议使用列表推导式,其内部是通过cpython来实现的比较用for循环要快
from time import perf_counter
from functools import wraps
def spend_time(func):
@wraps(func)
def decorate_func(*args,**kwargs):
start = perf_counter()
func()
all = perf_counter()-start
print(all)
return decorate_func
@spend_time
def for_func():
mylist=[]
all = range(100000)
for i in all:
mylist.append(i)
@spend_time
def list_finc():
mylsit=[i for i in range(100000)]
if __name__ == '__main__':
for_func()
list_finc()
#0.01984996400000001
#0.01048295299999999
生成器
优点:不会将所有的值一次性加载到内存中,延迟计算,一次返回一个结果,它不会一次生成所有的结果,这对大数据量处理,非常有用
生成器可以使用yield关键字编写也可以使用生成器表达式即把[]改成()