Python可迭代对象操作示例


Posted in Python onMay 07, 2019

本文实例讲述了Python可迭代对象。分享给大家供大家参考,具体如下:

1、列表生成式

list = [result for x in range(m, n)]
g1 = (i for i in range(101))
print(type(g1))
print(g1)
print(g1.__next__())

输出:

<class 'generator'>
<generator object <genexpr> at 0x0000024E6AC08F10>
0

g1 = (i for i in range(11))
list1 = [i for i in g1]
print(list1)

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

2、可迭代对象

①.可以直接作用于for循环的对象统称为可迭代对象,我们称之为:Iterator

②.我们可以使用isintance()判断一个对象是否是Iterator对象

③.可以直接作用于for循环的数据类型有以下几种

a.集合数据类型:如list、tuple、dict、set和string
b.生成器(generator):就是一个能返回迭代器的函数,其实就是定义一个迭代算法,可以理解为一个特殊的迭代器。

生成器:

通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,如果我们仅仅需要访问前面几个元素,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。

g1 = (i for i in range(11))
print(g1)
for i in range(11):
  print(next(g1),end='\t')

输出:

<generator object <genexpr> at 0x00000207F5C69678>
0   1   2   3   4   5   6   7   8   9   10 

注意:使用Iterator判断的时候需要导入Iterable的包

from collections import Iterable
print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance("",Iterable))
print(isinstance({},Iterable))
print(isinstance({1,2,3},Iterable))
print({1,2,3})
print(isinstance(1,Iterable))
print(isinstance(1.2,Iterable))
g1 = (i for i in range(101))
print(isinstance(g1,Iterable))

输出:

True
True
True
True
True
{1, 2, 3}
False
False
True

3、迭代器

迭代器:不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,

直到最后出现StopIteration错误,表示无法返回下一个值

可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)

可以使用isinstance()函数判断一个对象是否是Iterator对象。

注意:可迭代对象不一定是迭代器,但是迭代器一定是迭代对象。

可迭代对象与迭代器的关系:

可迭代对象包含迭代器

from collections import Iterator
print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance("",Iterator))
print(isinstance({},Iterator))
print(isinstance({1,2,3},Iterator))
print({1,2,3})
print(isinstance(1,Iterator))
print(isinstance(1.2,Iterator))
g1 = (i for i in range(101))
print(isinstance(g1,Iterator))

输出:

False
False
False
False
False
{1, 2, 3}
False
False
True

4、 Iterator转换

可以通过Iter()函数将list、tuple、dict、string转换为Iterator对象。

from collections import Iterator
list1 = [i for i in range(11)]
print(isinstance(list1,Iterator))
iter1 = iter(list1)
print(isinstance(iter1,Iterator))
for i in range(11):
  print(next(iter1),end='\t')

输出:

False
True
0   1   2   3   4   5   6   7   8   9   10 

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
零基础写python爬虫之打包生成exe文件
Nov 06 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
Python pip install之SSL异常处理操作
Sep 03 Python
用python进行视频剪辑
Nov 02 Python
pytorch实现线性回归以及多元回归
Apr 11 Python
python实现支付宝转账接口
May 07 #Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 #Python
python验证身份证信息实例代码
May 06 #Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 #Python
Python两台电脑实现TCP通信的方法示例
May 06 #Python
python3利用Socket实现通信的方法示例
May 06 #Python
You might like
PHP调用三种数据库的方法(3)
2006/10/09 PHP
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
JS实现图片切换特效
2019/12/23 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python中的推导式使用详解
2015/06/03 Python
pycharm远程调试openstack代码
2017/11/21 Python
详解python3中zipfile模块用法
2018/06/18 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
Python输出指定字符串的方法
2020/02/06 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
金融专业毕业生自荐信
2014/06/26 职场文书
2014年信访工作总结
2014/11/17 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
辞职离别感言
2015/08/04 职场文书
新年寄语2016
2015/08/17 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL