zoukankan      html  css  js  c++  java
  • 迭代器相关整理

    迭代器:将可迭代对象生成一个迭代器

    1 s = "1234"
    2 s1 = "5678"
    3 s2 = s.__iter__()           #生成s的迭代器,返回的是迭代器地址
    4 s3 = s1.__iter__()          #生成s1的迭代器,返回的是迭代器地址
    5 print(s2)
    6 print(s3)

    结果对照:

    <str_iterator object at 0x0000025E5E18F390>
    <str_iterator object at 0x0000025E5E18F2B0>

    从迭代器中取值:

     1 s = [[4,5,6,[7,8,9]],[]]
     2 s1 = "5678"
     3 s2 = s.__iter__()           #生成s的迭代器,返回的是迭代器地址
     4 s3 = s1.__iter__()          #生成s1的迭代器,返回的是迭代器地址
     5 print(s2)
     6 print(s3)
     7 s4 = s2.__iter__()          #再次生成s2的迭代器,返回的是迭代器地址,无实际意义,与第一次生成迭代器同一个地址
     8 s5 = s3.__iter__()          #再次生成s3的迭代器,返回的是迭代器地址
     9 print(s4)
    10 print(s5)
    11 print(s2.__next__())        #取迭代器中第一个元素[4,5,6,[7,8,9]]
    12 print(s3.__next__())        #去迭代器中第一个字符串"5"
    13 print(s4.__next__())
    14 print(s5.__next__())

    结果对照:

    1 <list_iterator object at 0x00000274ABED89B0>
    2 <str_iterator object at 0x00000274ABED8160>
    3 <list_iterator object at 0x00000274ABED89B0>
    4 <str_iterator object at 0x00000274ABED8160>
    5 [4, 5, 6, [7, 8, 9]]
    6 5
    7 []
    8 6

    查看是否是一个可迭代对象和是否是一个迭代器:

    1 from collections.abc import Iterable,Iterator
    2 
    3 s = [[4,5,6,[7,8,9]],[]]
    4 s1 = "5678"
    5 print(isinstance(s,Iterator))       #查看是否是一个迭代器
    6 print(isinstance(s1,Iterable))      #查看是否是一个可迭代对象

    结果对照:

    1 False
    2 True
  • 相关阅读:
    【bzoj1300】大数计算器
    BZOJ3192: [JLOI2013]删除物品
    BZOJ2818: Gcd
    BZOJ2440: [中山市选2011]完全平方数
    BZOJ3994: [SDOI2015]约数个数和
    BZOJ2154: Crash的数字表格
    BZOJ3529: [Sdoi2014]数表
    BZOJ2301: [HAOI2011]Problem b
    BZOJ1562: [NOI2009]变换序列
    BZOJ1059: [ZJOI2007]矩阵游戏
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10249770.html
Copyright © 2011-2022 走看看