zoukankan      html  css  js  c++  java
  • day13

    迭代器

    不是函数,只是一个称呼而已

    # 迭代器:x = 10  # 不是可迭代对象
    s = 'abc'
    s.__iter__()
    lt = [1, 2, 3]
    lt.__iter__()
    tup = (1,)
    tup.__iter__()
    dic = {'a': 1}
    dic.__iter__()
    se = {1}
    se.__iter__()
    fw = open('test.txt', 'a+', encoding='utf8')
    fw.seek(0, 0)
    fw.__iter__()
    

    可迭代对象:

    含有__iter__方法叫做可迭代对象

    除了数字类型都是可迭代对象

    可迭代对象使用__iter__变成迭代器

    迭代器对象:

    含有__iter__和__next__方法叫做迭代器对象

    只有文件时迭代器对象

    迭代器使用__iter__依然是迭代器#

    可迭代对象不一定是迭代器对象; 迭代器对象一定是可迭代对象

    三元表达式

    x = 10
    y = 20  
    三元表达式 --> 三目表达式
    print(x) if x > y else print(y) 
    

    列表推导式

    lt = [i**2 for i in range(10)
    print(lt)
    

    字典生成式

    lt1 = ['a', 'b', 'c']
    lt2 = [1, 2, 3]
    dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
    print(dic)
    lt = list('abc')
    print(lt)
    

    生成器生成式

    自定义range

    def my_range(start, stop, step=1):
        while start < stop:
            yield start
            start += 1
    
    
    g = my_range(0, 3)
    print(f"list(g): {list(g)}")
    list(g): [0, 1, 2]
    

    yield的特性

    暂停函数

    通过next取值

    return的特性

    1. 终止函数 2. 通过调用函数拿到值写一个

    range方法

    1. 生成器 2. 可变长参数
  • 相关阅读:
    每日日报8月12日
    每日日报8月15日
    每日日报8月18日
    每日日报8月9日
    九月29号——动手又动脑
    今日总结
    每周总结
    今日总结
    周总结
    今日总结
  • 原文地址:https://www.cnblogs.com/yu521/p/11580489.html
Copyright © 2011-2022 走看看