python的列表生成式,生成器和generator对象你了解吗
目录
- 列表生成式
- 列表表达式初始化dict或set
- generator对象
- 生成generator对象
- 总结
列表生成式
可以使用列表生成式生成 列表元素。
例如:
列表还支持 if … else 与 for 循环组合的单行表达式进行初始化。
>>> example = [i*i if i%2 == 0 else 2*i for i in range(1,11)] # 1~10中,奇数*2,偶数平方 >>> print ([i for i in range(1,11)]) # 对照组,1~10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> example [2, 4, 6, 16, 10, 36, 14, 64, 18, 100]
当然,if … else 本就支持单行写法。
>>> a = 100 >>> if a < 100: ... print("lt 100") ... elif a == 100: ... print("eq 100") ... else: ... print("gt 100") ... eq 100 >>> >>> # 如果将上述if...else写为单行式 ... print("lt 100") if a < 100 else print("eq 100") if a == 100 else print("gt 100") eq 100
列表表达式初始化 dict 或 set
同时,我们也可以使用单行for初始化 set
还可以用于提取list的下标与元素,需要注意的是,如果使用 :
的key:value的形式,最终结果是dict。
generator对象
探索,是否可以类比上述,生成tuple。当我这么做的时候,结果获得一个generator类型。
简单来说返回的generator是一个可迭代对象,因此我们尝试使用 for 遍历它的时候,是可以遍历得到其所有数据的。
而这里的 可迭代对象(Iterable)主要指可以直接作用于for循环的对象(for循环本质上就是通过不断调用next()函数进行迭代)。
包括内置的(list
、tuple
、dict
、set
、str
等)和生成器(generator
)。
生成generator对象
主要有两种方法:
- 第一种使用
()
包裹列表生成式 - 第二种,使用 yield 标记
示例:演示yield
这里可以通过 next() 获取内部元素
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
相关推荐
-
Python列表生成式与生成器操作示例
本文实例讲述了Python列表生成式与生成器操作.分享给大家供大家参考,具体如下: 列表生成式:能够用来创建list的生成式 比如想要生成类似[1*1,2*2,3*3,-..100*100]的这种list时 可以用 [x * x for x in range(1,11)] 这样就能生成,除此之外,后面还能添加判断条件来筛选 比如 [x * x for x in range(1,11) if x%2=0] 这样就能筛选出仅有偶数的平方 还能用多层循环来生成全排列 [m+n for m in 'AB
-
Python生成器generator原理及用法解析
前言 生成器generator 生成器的本质是一个迭代器(iterator) 要理解生成器,就要在理解一下迭代,可迭代对象,迭代器,这三个概念 Python生成器generator简介 iteration, iterable, iterator 迭代(iteration):在python中迭代通常是通过for...in...来实现的.而且只要是可迭代对象iterable,都能进行迭代. 可迭代对象(iterable):Python中的任意的对象,只要它定义了可以返回一个迭代器的 __iter__
-
python开发入门——列表生成式
介绍 本文主要介绍Python中列表生成式的基本知识和使用 生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环: >>> L = [] >>> for x in range(1, 11): ..
-
python三大器之迭代器、生成器、装饰器
目录 迭代器 生成器 装饰器(非常实用!) 迭代器 聊迭代器前我们要先清楚迭代的概念:通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某一段代码块,并将每一次迭代得到的结果作为下一次迭代的初始值).可迭代对象(iterable):是指该对象可以被用于for…in…循环,例如:集合,列表,元祖,字典,字符串,迭代器等. 在python中如果一个对象实现了 __iter__方法,我们就称之为可迭代对象,可以查看set\list\tuple…等源码内部均实现了__iter
-
一文搞懂python 中的迭代器和生成器
可迭代对象和迭代器 迭代(iterate)意味着重复,就像 for 循环迭代序列和字典那样,但实际上也可使用 for 循环迭代其他对象:实现了方法 __iter__ 的对象(迭代器协议的基础).__iter__方法返回一个迭代器,它是包含方法 __next__ 的对象,调用时可不提供任何参数:当你调用 __next__ 时,迭代器应返回其下一个值:如果没有可供返回的值,应引发 StopIteration 异常:也可使用内置函数 next(),此种情况下,next(it) 与 it.__next(
-
python之yield和Generator深入解析
首先我们从一个小程序导入,各定一个list,找出其中的素数,我们会这样写 import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和本身之外的数整除,则为合数.其实我们的判定范围到根号n就可以 for cur in range(2,int(math.sqrt(number))+1,2): if numbe
-
python的列表生成式,生成器和generator对象你了解吗
目录 列表生成式 列表表达式初始化dict或set generator对象 生成generator对象 总结 列表生成式 可以使用列表生成式生成 列表元素. 例如: 列表还支持 if … else 与 for 循环组合的单行表达式进行初始化. >>> example = [i*i if i%2 == 0 else 2*i for i in range(1,11)] # 1~10中,奇数*2,偶数平方 >>> print ([i for i in range(1,11)]
-
python用列表生成式写嵌套循环的方法
将两个嵌套for循环写成一个列表生成式 如,有一个嵌套列表,a=[[1,2],[3,4],[5,6]],要提取列表里的每一个元素 用for循环处理: for i in a: for j in i: print(j) 用列表生成式: b=[j for i in a for j in i]#注意两个for的顺序 print(b) b=[1, 2, 3, 4, 5, 6] 以上这篇python用列表生成式写嵌套循环的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
浅谈Python中列表生成式和生成器的区别
列表生成式语法: [x*x for x in range(0,10)] //列表生成式,这里是中括号 //结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] (x*x for x in range(0,10)) //生成器, 这里是小括号 //结果 <generator object <genexpr> at 0x7f0b072e6140> 二者的区别很明显: 一个直接返回了表达式的结果列表, 而另一个是一个对象,该对象包含了对表达式结果的计算引用, 通
-
通过代码实例展示Python中列表生成式的用法
1 平方列表 如果你想创建一个包含1到10的平方的列表,你可以这样做: squares = [] for x in range(10): squares.append(x**2) 这是一个简单的例子,但是使用列表生成式可以更简洁地创建这个列表. squares = [x**2 for x in range(10)] 这个最简单的列表生成式由方括号开始,方括号内部先是一个表达式,其后跟着一个for语句.列表生成式总是返回一个列表. 2 整除3的数字列表 通常,你可能这样写: numbers = [
-
Python高级特性之切片迭代列表生成式及生成器详解
目录 切片 迭代 列表生成式 生成器 迭代器 在Python中,代码越少越好.越简单越好.基于这一思想,需要掌握Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码.代码越少,开发效率越高. 切片 tuple,list,字符串都可以进行切片操作 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] L[0:3] # ['Michael', 'Sarah', 'Tracy'] L[:3] # ['Michael', 'Sarah', '
-
Python中的列表生成式与生成器学习教程
列表生成式 即创建列表的方式,最笨的方法就是写循环逐个生成,前面也介绍过可以使用range()函数来生成,不过只能生成线性列表,下面看看更为高级的生成方式: >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法. 你甚至可以在后面加上if判断: >>
-
python列表生成式与列表生成器的使用
列表生成式:会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多,就会占用过多的内存空间,可能会导致MemoryError内存错误或者导致程序在运行时出现卡顿的情况 列表生成器:会创建一个列表生成器对象,不会一次性的把所有结果都计算出来,如果需要获取数据,可以使用next()函数来获取,但是需要注意,一旦next()函数获取不到数据,会导致出现StopIteration异常错误,可以使用for循环遍历列表生成器,获取所有数据 需要视情况而定,如果数据量比较大,推荐使用生成器 py
-
python 中的列表生成式、生成器表达式、模块导入
5.16 列表生成式 l=[] for i in range(100): l.append('egg%s' %i) print(l) l=['egg%s' %i for i in range(100)] l=['egg%s' %i for i in range(1000) if i > 10] print(l) 5.17 列表生成式与生成器表达式的应用 names=['egon','alex_sb','wupeiqi','yuanhao','lxx'] res=map(lambda x:x.
随机推荐
- angular directive的简单使用总结
- VBS脚本病毒原理分析与防范
- Oracle常见错误代码的分析与解决
- thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
- 深入密码加salt原理的分析
- Python接收Gmail新邮件并发送到gtalk的方法
- MySQL对数据库数据进行复制的基本过程详解
- JavaScript类继承及实例化的方法
- javascript getElementsByClassName实现代码
- 利用jquery的获取JS文件中的字符串内容
- JS实现获取剪贴板内容的方法
- C++广播通信实例
- asp.net(c#) RSS功能实现代码
- 解决laravel 5.1报错:No supported encrypter found的办法
- 合理使用抗生素
- 微信小程序实现刷脸登录
- vue项目添加多页面配置的步骤详解
- JS中getElementsByClassName与classList兼容性问题解决方案分析
- 一个简单的Golang实现的HTTP Proxy方法
- mysql 8.0.15 下载安装详细教程 新手必备!