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实现两个变量的交换(在Python 中同一个类两个函数间变量的调用方法)
- python 正则表达式菜鸟教程(详解Python正则表达式re模块)
- python函数基本使用(Python3中exp函数用法分析)
- python的多线程比多进程效率高(Python中单线程、多线程和多进程的效率对比实验实例)
- python多线程多种方法(详解python多线程之间的同步一)
- python程序运行步骤(详解python运行三种方式)
- python机器人开发(python程序控制NAO机器人行走)
- python提供的四种基本数据类型(浅谈python的输入输出,注释,基本数据类型)
- python选择排序最大最小同时排序(Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例)
- 如何学会python多线程(Python3多线程基础知识点)
- 用python编写一个gui(用 Python 构建漂亮的 GUI)
- eval在python里面什么意思(python 为什么说eval要慎用)
- python如何使用yield(YII2.0框架行为Behavior深入详解)
- python pandas 匹配值(python 使用pandas计算累积求和的方法)
- pythondjango搭建web(PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上)
- pythonindex函数用法(python sort、sort_index方法代码实例)
- 焕然一新 成都轨道集团官方网站改版上线(成都轨道集团官方网站改版上线)
- 成都轨道交通19号线二期全线电通(成都轨道交通19号线二期全线电通)
- 19号线二期全线电通 轨道交通项目最新进展来了(19号线二期全线电通)
- 涉及3条地铁线路 成都这4座轨道交通站点有新名字了(涉及3条地铁线路)
- 来了 成都轨道交通5条线路刷新 进度条(成都轨道交通5条线路刷新)
- 一部手机两套系统 OPPO Find X3的正确打开方式你知道吗(一部手机两套系统)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9