zoukankan      html  css  js  c++  java
  • 可迭代对象的背后

    可迭代对象的2种循环方法

    #方法一
    s='abc'#可迭代对象
    for i in s:
        print(i)
     
    #方法二   
    it=iter(s)#构建迭代器
    while True:
        try:
            print(next(iter(it)))
        except StopIteration:
            del s
            break

    迭代器包含:__next__,__iter__方法
      1.无参数的__next__方法是为了返回序列中的下一个元素,没有元素抛出StopIteration异常
      2.__iter__方法是为了让迭代器可迭代
    可迭代对象:__iter__方法

    __getitem__方法

    import re
    import reprlib
    
    RE_WORD = re.compile('w+')
    
    
    class Sentence:
        def __init__(self, text):
            self.text = text
            self.words = RE_WORD.findall(text)
    
        def __len__(self):
            return len(self.words)
    
        def __repr__(self):
            return 'Sentence(%s)' % reprlib.repr(self.text)
    
        def __getitem__(self, index):
            return self.words[index]
    
    s3=Sentence('pig and pepper')
    
    for i in s3:
        print(i)
    
    '''
    s3可迭代的原因是因为:__getitem__方法
    python中的序列都可迭代的原因:都实现了__getitem__方法。
    1.python中检查对象是否可迭代的步骤是先检查是否实现的__iter__方法
    2.如果没有__iter__,但是实现了__getitem__方法,python解释器会创建一个迭代器,尝试按索引进行获取元素
    3.如果尝试失败则会抛出Typeerror错误
    '''
  • 相关阅读:
    第十四周课程总结&实验报告(简单记事本的实现)
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&试验报告(五)
    基于C的
    RMQ 区间最值问题
  • 原文地址:https://www.cnblogs.com/liuer-mihou/p/11903519.html
Copyright © 2011-2022 走看看