Python基础语法 - 列表生成器
列表生成式 1. L = [x for x in range(5)] print(L) #[0, 1, 2, 3, 4] 2. L = [x*2 for x in range(5)] print(L) #[0, 2, 4, 6, 8] 3. def f(n): return n**3 a = [f(x) for x in range(5)] print(a) #[0, 1, 8, 27, 64] 生成器 Python有两种不同的方式提供生成器: 生成器表达式: 定义:类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表。 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的 [] 改成 () ,就创建了一个generator: g = (x*2 for x in range