PYTHON学习0034:函数---列表生成式和生成器---2019-6-29





```
也可以在列表生成器里加三元运算:
a=[i5 if i>5 else i2 for i in range(11)]
print(a)
输出为:
[0, 2, 4, 6, 8, 10, 30, 35, 40, 45, 50]



列表生成器格式:
a=(i for i in range(10)
print(a)
输出为:
<generator object <genexpr> at 0x0000000001DC77C8>
并没有输出列表,只是返回了一个表达式,generato就是列表生成器的意思,里面只是储存了生成器的方法,当还没有生成。节省了内存空间。
可以用next函数调用即可生成结果:
**a=(i  for i in range(10))

print(a)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(list(a))
输出结果为:
<generator object <genexpr> at 0x0000000001DC77C8>
0
1
2
3
[4, 5, 6, 7, 8, 9]

**

**注意:生成器只能往前走,不能后退。已经生成的数据,就不再包含在剩余的表达式里面了,程序走到最后会报错**
生成器只有一个next方法,不能切片。

原文地址:https://blog.51cto.com/13543767/2415310

时间: 2024-10-27 09:49:37

PYTHON学习0034:函数---列表生成式和生成器---2019-6-29的相关文章

python学习道路(day5note)(列表生成式,生成器,装饰器,常用模块)

生成列表的方式 data = [1,2,3]  需求   每个数字加上1 # data = ( x*2 for x in range(5)) print(data) 列表生成式 后面的I赋予加1操作,i+q只能放在前面 加上三元运算可以 生成器 (惰性运算,算到哪个值就到哪个值,往后就不算了)就是一个推到行算法 中括号叫做列表生成式,小括号叫做生成器 从左到右执行  当我访问到后面的数时候,前面的就没了 这样也是可以取值的,从左到右 斐波拉契数列 ### ### 转为生成器 加了yield 叫做

Python学习九:列表生成式

列表生成式,是Python内置的一种极其强大的生成list的表达式. 如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10): [python] view plain copy print? >>> range(1, 9) [1, 2, 3, 4, 5, 6, 7, 8] 可是,如果要生成[1*1 , 2*2 , 3*3 , ... , 10*10] 怎么做呢?可以使用循环: [python] view plai

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学习笔记4--装饰器、生成器、迭代器、匿名函数、内置方法、数据序列话

一.装饰器 1.意义:当需要给程序中某些函数新增某项功能时,为了避免直接修改函数源代码和函数调用方式,所以引入装饰器. 2.定义:装饰器用于装饰其他函数,就是为其他函数提供附加功能. 3.原则: 1)不修改被装饰的函数的源代码 2)不修改被装饰的函数的调用方式 4.装饰器储备知识: 1)函数即变量 2)高阶函数 a.把函数当做参数传递给另一个函数(在不修改被修饰函数源代码的情况下为该函数添加功能) b.返回值中包含函数名(在不修改被修饰的函数的调用方式的情况下为该函数添加功能) 3)嵌套函数:在

Python基础----生成器、三元表达式、列表生成式、生成器表达式

Python开发基础-Day9-生成器.三元表达式.列表生成式.生成器表达式 生成器 生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器,生成器在本质上就是迭代器. def foo(): print('first------>') yield 1 print('second----->') yield 2 print('third----->') yield 3 print('fouth----->') g=foo() from collections impor

5.1.24 Python之列表生成式、生成器、可迭代对象与迭代器

语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法糖的概念 "语法糖",从字面上看应该是一种语法."糖",可以理解为简单.简洁.其实我们也已经意识到,没有这些被称为"语法糖"的语法,我们也能实现相应的功能,而 "语法糖"使我们可以更加简洁.快速的实现这些功能. 只是Python解释器会把这

Python函数编程——列表生成式和生成器

Python函数编程--列表生成式和生成器 一.列表生成式 现在有个需求,现有列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现? 1.二逼青年版 生成一个新列表b,遍历列表a,把每个值加1后存在b里,最后再把a=b, 这样二逼的原因不言而喻,生成了新列表,浪费了内存空间. >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = [] >>> for i in

列表生成式、生成器&amp;迭代器

一.列表生成式 先有列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现? 方法一: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] b = [] for i in a:b.append(i+1) a = b print(a) 此方法内存中会同时有两份列表,因此不适合处理大规模数据. 方法二: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for index,i in enumerate(a): a[

python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,next 方法 内置函数iter(),next()  本质上都是用的对象.__iter__(),__next__()的方法 内置函数 iter(iterable),表示把可迭代对象 变成迭代器(iterator) 内置函数next(iterator) ,表示查看下一次迭代的值(当然也可以用 iterato