python列表生成器与生成器

列表生成器是python内置的非常简单却非常强大的。

生成一个列表[1,2,3,4]可以用list(range(1,5))

列表生成器的应用

如果上面的公式加上判断,就可以筛选出想要的结果,比如仅需要偶数的平方

使用多层循环

生成器

生成器与列表生成器的本质区别就是:一个已经生成数据了,使用时,如果数据过大,会产生内存溢出,而生成器是只有循环时,才会生成数据。

生成器与列表生成器的区别在于一个是[],一个是()

生成器书写

g=(x x ())
(g)

打印generator的方法是next(g)和for循环

使用函数的形式,打印斐波拉契数列

(max):
    nab=n < max:
        (b)
        ab=ba+b
        n=n+fib()

上面的函数和generator仅一步之遥,要把fib函数变成generator,只需要把print(b)改成yield 就可以

(max):
    nab=n < max:
        b
        ab=ba+b
        n=n+fib()

打印fib的生成器方法

i fib():
    (i)

如果使用for循环调用generator时,想拿到return返回值,需捕获stopIteration错误,返回值包含在stopIteration的value中:

g=fib(6)

(max):
    nab=n < max:
        b
        ab=ba+b
        n=n+g=fib()
:
    :
        x=(g)
        (x)
    e:
        (e.value)

原文地址:http://blog.51cto.com/13272050/2110727

时间: 2024-10-10 22:15:18

python列表生成器与生成器的相关文章

python列表解析和生成器表达式

列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析.列表解析表达式为: [expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr] 第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表. 第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相

初学Python——列表生成式、生成器和迭代器

一.列表生成式 假如现在有这样一个需求:快速生成一个列表[1,2,3,4,5,6,7,8,9,10],该如何实现? 在不知道列表生成式的情况下,可能会这样写: a=[1,2,3,4,5,6,7,8,9,10] 如果要每个值+1呢?可能会这样: for index,i in enumerate(a): a[index] +=1 print(a) 不够方便,这里讲一个快速生成列表的方法:列表生成式.意思就是立即生成列表. 生成一个1到10的列表: a = [i+1 for i in range(10

python列表生成式、生成器,迭代器与二分法

一.列表生成式 列表生成式是快速生成一个列表的一些公式 列表生成式的书写格式:[x*x for x in range(1 , 11)] 列表生成式语法是固定的,[]里面for 前面是对列表里面数据的运算操作,后面跟平常for循序一样遍历去读取.运行后会自动生成新的列表 一般列表生成式 list1 = list(range(1,10)) #不使用列表生成式生成列表 list2 = [x for x in range(1,10)] #使用列表生成式生成列表 print(list1) print(li

python列表生成式和生成器表达式小程序

列表表达式 程序一: 常规写法: egg_list=[] for i in range(100): egg_list.append('egg%s' %i) print(egg_list) 列表表达式写法: l=['egg%s' %i for i in range(100) if i > 0] print(l) 程序二: 常规写法: l=[1,2,3,4] s='hello' l1=[] for num in l: for s1 in s: t=(num,s1) l1.append(t) prin

学习日志---python(列表解析、生成器、字典和集合)

产生列表可以用range(); 列表解析 对一个序列进行解析生成新的列表:列表解析比for的性能好很多: a=[x for x in range(0,10) if x > 5] print a a=[x+1 for x in range(0,10) if x > 5] print a 利用列表中的表达式可以得出所需的列表,无需在用for循环得到: 双重嵌套:用更简便的语句得出里列表: a=[(x,y) for x in range(3) for y in range(3)] print a 解

Python列表生成式和生成器

[1]列表生成器:列表生成式就是一个用来生成列表的特定语法形式的表达式. 1.基础语句结构:[exp for iter_var in iterable例如:a=[f(x) for x in range(10)] 2.工作过程: 迭代iterable中的每个元素:每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值:最后把所有通过exp得到的计算值以一个新列表的形式返回. 相当于这样的过程:L = [] for iter_var in iterable: L.append(e

Python基础(9)三元表达式、列表解析、生成器表达式

一.三元表达式 三元运算,是对简单的条件语句的缩写. # if条件语句 if x > f: print(x) else: print(y) # 条件成立左边,不成立右边 x if x > y else y # 三元表达式 python的三元运算格式如下: result=值1 if x<y else 值2 # 如果条件成立,那么将"值1"赋值给result变量,否则,将"值2"赋值给result变量 二.列表解析 列表解析:用三元表达式,将结果写入列

python之列表解析与生成器

防伪码:忘情公子著 什么是列表解析? 列表解析就是根据已有列表,高效生成新列表的方式 列表解析是python迭代机制的一种应用,它常用于实现创建新的列表,因此要放置于[]中 语法: [expression for iter_var in iterable][expression for iter_var in iterable if cond_expr] 例: In [1]: L = [i**2 for i in xrange(9)] In [2]: print L[0, 1, 4, 9, 16

python学习笔记——列表生成式与生成器

1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行: 1 L = [] 2 for i in range(1,11): 3 L.append(i*i) 列表生成式只用一行,前面是生成规则,后面是初始元素,最后还可以加上判断条件: 1 [i*i for i in range(1, 11)] 列表生成式还可以实现多层循环,以及判断,刚刚的栗子再写复杂一

python 列表生成器

python 列表生成器 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 一个循环 在C语言等其他语言中,for循环一般是这样的 如果python也这么写,那么真该看下python的基础教程了~ 但要注意的是,需要加一个[]来,否则会报错... 在上面的例子中,不仅可以嵌套for,甚至可以嵌套if语句 再看看,原来是什么样子 两个循环呢? 原来可能是这样的? 现在可以这样了!!!