python3中生成器和列表推导式的优点和缺点

列表推导式

优点:如果生成列表的方式不太复杂,这是建议使用列表推导式,其内部是通过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关键字编写也可以使用生成器表达式即把[]改成()

你可能感兴趣的:(python3中生成器和列表推导式的优点和缺点)