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错误
    '''
  • 相关阅读:
    wowjs
    权限组件的判断
    跨域
    Github DNS解析失败怎么办?
    GraceUI
    ant vue 组件 cascader 封装地址联动选择器
    js 防抖节流
    SCSS 的基本使用
    使用 nuxt 开发网站 之 如何做国际化?
    使用 nuxt 开发网站 之 如何展示子页面?
  • 原文地址:https://www.cnblogs.com/liuer-mihou/p/11903519.html
Copyright © 2011-2022 走看看