python基础---列表生成器、迭代器等
一、列表生成式
用来创建list的表达式,相当于for循环的简写形式
语法: [表达式 for循环 判断条件]
- '''
- 普通写法
- '''
- def test():
- l= []
- for i in range(10):
- l.append(i*i)
- return l
- print(test())
- '''
- 高级写法
- '''
- l = [x * x for x in range(10)]
- print(l)
- '''
- 更高级的用法
- 格式:[操作 for i in range(x) 执行操作的条件(x)]
- '''
- ##得到0-9序列中偶数的平方
- l = [x * x for x in range(10) if x%2==0)]
- print(l)
- '''
- 高级解释:x*x 来源于0--9的for循环 但是 x要满足x%2==0
- '''
- ## 提取字符串中的数字,组成字符串
- l = 'asd123fds123'
- l2 = [x for x in l if x.isdigit()]
- x =''.join(x) ## 字符串拼接
- print(x)
- '''
- 解释:x 来源于for循环(遍历l), 但是x要是数字
- '''
二、生成器generator
生成器和列表生成器很像,只是把中括号变成小括号
生成器不会一次性生成所有数据,只有在调用的时候才生成。
生成器不能通过切片、或者下标取数据,只能循环或者next()取数据--- 注意生成器的位置问题,类似于‘’句柄‘’
- ##生成器的语法和列表生成器很像
- g = (x*x for x in range(10))
- print(g) ## 输出是:generator对象
- print(type(generator)) ## 输出是:generator对象
- print(next(g)) ## 获得下一个元素
- ## 直接遍历generator对象
- for n in g:
- print(n)
二、可迭代对象和迭代器
可迭代对象(Iterable):能被for遍历 不能next()
迭代器(Iterator): 能被for遍历 能next()函数调用,不断返回下一个值
迭代器对象表示一个数据流,可以被看做是一个序列,但是长度不可知。只是在需要的时候,才会计算。
它可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误
- ## 可以被for循环的对象,称为可迭代对象
- ## 可以被next()和for访问,称之为迭代器对象(用的时候才生成)
- from collections import Iterable,Iterator
- ## 判断对象的类型-- 类似于type
- print(isinstance([],Iterable))## True 可迭代 对象
- print(isinstance([],Iterator))## Flase 不是可迭代器对象 不能next访问
- print(isinstance('a',Iterable))##True
- print(isinstance('a',Iterator))##Flase
- print(isinstance({},Iterable))##True
- print(isinstance({},Iterator))##Flase
- ## 数值既不是可迭代对象,也不是迭代器对象
- ## 列表、字符串、字典、元祖 都是Iterable对象,不是Iterator对象
- ## generator、map、filter既是Iterable对象,也是Iterator对象
- ##可迭代对象转为迭代器对象--- iter()
- it = iter([1,2,3])
- print(next(it)) ##输出1
- print('----------------------')
- l = [(2,12),(6,23),(4,8)]
- l.sort(key=lambda x:x[1],reverse=True) ## sort(key,...)根据什么条件排序,排序条件
- print(l)
- print(l[0][0])
type主要用于获取未知变量的类型,范围比较小
isinstance主要用于判断A类是否继承于B类,范围更大
python基础---列表生成器、迭代器等的更多相关文章
- python基础(八)生成器,迭代器,装饰器,递归
生成器 在函数中使用yield关键字就会将一个普通的函数变成一个生成器(generator),普通的函数只能使用return来退出函数,而不执行return之后的代码.而生成器可以使用调用一个next ...
- python基础之生成器迭代器
1 生成器: 为什么要有生成器? 就拿列表来说吧,假如我们要创建一个list,这个list要求格式为:[1,4,9,16,25,36……]这么一直持续下去,直到有了一万个元素的时候为止.如果我们要创建 ...
- python高级之生成器&迭代器
python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...
- 第三篇:python高级之生成器&迭代器
python高级之生成器&迭代器 python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...
- 十三. Python基础(13)--生成器进阶
十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends&qu ...
- 十二. Python基础(12)--生成器
十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...
- python基础——列表生成式
python基础——列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4 ...
- python基础——列表推导式
python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...
- Python基础------列表,元组的调用方法
Python基础------列表,元组的调用方法@@@ 一. 列表 Python中的列表和歌曲列表类似,也是由一系列的按特定顺序排列的元素组成的,在内容上,可以将整数,实数,字符串,列表,元组等任何类 ...
随机推荐
- maven中央仓库地址(支持db2,informix等)
maven中央仓库地址(以下设置写在pom.xml文件里): <repositories> <repository> <id>nexus</id> &l ...
- Jekyll博客添加Valine评论
Jekyll博客添加Valine评论 关于github搭建jekyl博客,在这里不做过多描述,详情参考: 百度搜索关键字:github搭建jekyll博客 官网:https://www.jekyll. ...
- jquery 判断浏览器版本
如果你也是Jquery最初的使用者,那么你一定经历过这样判断浏览器的时代:$.browser.msie && $.browser.version,你目前使用的组件里可能还有应用.但是J ...
- PAT 1120 Friend Numbers
1120 Friend Numbers (20 分) Two integers are called "friend numbers" if they share the sa ...
- Centos7中网络及设备相关配置
centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...
- sqlserver数据库 视图相关
1.首先创建一个视图 方法一:右键解决 方法二:脚本 create view view_test AS select * from t1 GO 2.删除视图 方法1:右键解决 方法2:脚本 if ex ...
- open() 文件读写简要记录
- Selenium自动化获取Http报文信息并判断当前API状态
public int loadingFinishedCount(WebDriver driver){ LogEntries logs = driver.manage().logs().get(&quo ...
- http协议与https协议的前世今生
一.Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ...
- 201671010142 2017-2 《java第十二章学习感悟》
Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕 ...