您的位置:首页 > 脚本大全 > > 正文

python迭代列表解析(Python可迭代对象操作示例)

更多 时间:2021-10-13 00:58:16 类别:脚本大全 浏览量:1421

python迭代列表解析

Python可迭代对象操作示例

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

1、列表生成式

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 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

  • ?
  • 1
  • 2
  • 3
  • 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。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 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的包

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 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对象。

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

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

    可迭代对象包含迭代器

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 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对象。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 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

    您可能感兴趣