python迭代列表解析(Python可迭代对象操作示例)
python迭代列表解析
Python可迭代对象操作示例本文实例讲述了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程序设计有所帮助。
原文链接:https://blog.csdn.net/lm_is_dc/article/details/80077471
- python的pickle用法(Python multiprocess pool模块报错pickling error问题解决方法分析)
- python监控系统界面(Python远程视频监控程序的实例代码)
- python报表可视化(使用Python快速制作可视化报表的方法)
- python3编程过程(Python3模拟登录操作实例分析)
- python自动化邮件管理(Python实现E-Mail收集插件实例教程)
- python中统计文本中单词数的代码(Linux上使用Python统计每天的键盘输入次数)
- python操作redis(Python获取Redis所有Key以及内容的方法)
- pythonmatplotlib散点图怎么画(python使用matplotlib画柱状图、散点图)
- python数据分析删除重复值(Python3实现从排序数组中删除重复项算法分析)
- 基于pythonopencv的图片识别(Python Opencv实现图像轮廓识别功能)
- python多线程多进程运行场景(Python多线程同步---文件读写控制方法)
- python plot绘图(python使用Plotly绘图工具绘制气泡图)
- python列表反转的方法(Python实现的列表排序、反转操作示例)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- python 自定义获取文件目录(Python使用os.listdir和os.walk获取文件路径与文件下所有目录的方法)
- pythonmatplotlib画图流程(python3使用matplotlib绘制条形图)
- 这里输入关键词(请手动输入关键词)
- 小说 顾瑾岚拿出一套飞行棋,别说你连飞行棋都不会哦(顾瑾岚拿出一套飞行棋)
- 金品公司 界界乐中秋限定飞行棋礼盒 露营藤篮礼盒全新上市(界界乐中秋限定飞行棋礼盒)
- 必看 8月,相比七夕,更需要注意的是这些事(必看8月相比七夕)
- 8月23日11时16分将迎处暑,逐渐进入气象意义上的秋天(8月23日11时16分将迎处暑)
- 花不语 下 如果重来一次的话,你还会这么选择吗(花不语下如果重来一次的话)
热门推荐
- mysql中默认排序教程(基于mysql 默认排序规则的坑)
- php里的fpm是什么(phpfpm的作用和用法)
- mysql与oracle体系结构(详解MySQL实时同步到Oracle解决方案)
- dedecms标签分类(dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章)
- vue应用转flutter(Vue和Flask通信的实现)
- docker compose使用方法(docker和docker-compose一键安装教程支持在线和离线)
- python 暗弱目标提取(Python提取频域特征知识点浅析)
- dedecms调用原始图(DEDECMS点击图片进入下一页功能实现教程)
- python简易翻译器的运行(Python3.6实现带有简单界面的有道翻译小程序)
- dedecms调用logo标签(DedeCMS 5.7 tag标签长度限制的修改方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9