zoukankan      html  css  js  c++  java
  • python基础(十六、变量进阶

    15.变量进阶
    5)迭代器__iter__
    (1)对int类型数据进行迭代遍历会报错

    (2)dir()函数辨别可迭代变量
    dir()函数可以查看变量或数据类型支持的操作,包含“iter”方法的变量或数据类型是可以迭代的

    可以使用成员变量in判断是否包含“iter”:

    可以迭代的数据类型:str、list、dict、tuple、set、open(文件)
    不可迭代数据类型:int、bool、float

    (3) “iter”方法就是迭代器

    list.__iter__的数据类型是列表迭代器,类似的数据类型还有字符串迭代器,字典迭代器等
    迭代器也支持“iter”方法,说明迭代器本身也是可迭代的
    迭代器包含“iter”和“next”方法

    (4)迭代遍历迭代器,可以获取列表中的数据

    (5)从迭代器获取数据的方法:next

    数据取完后,再调用__next__,会报错

    数据取完后,想要再次获取数据,需要重新获取迭代器

    (6)for循环的工作原理:
    for循环内部使用的是迭代器

    (7)判定迭代器和可迭代对象Iterator、Iterable
    ①通过dir()查看变量的操作,包含“iter”方法的变量可迭代,包含“iter”和“next”方法的变量是迭代器

    ②官方判定方法Iterator、Iterable

    判断是否可迭代,区分处理

    (8)小结
    迭代器的作用:让不同的数据类型有相同的遍历方式。
    迭代器的特点:
    ①省内存
    ②只能向前,不能重复
    ③惰性机制,必须调用next才能继续执行

    6)生成器
    生成器的本质就是迭代器。
    生成器的作用是节省内存。
    (1)生成器的引入

    生成器可以帮助我们每次只拿一个数据,不用一次取出所有数据。

    (2)生成器函数的语法:
    def func():
    yield
    func():创建一个生成器对象
    生成器函数执行的时候,不会立即把函数全部执行完,会返回一个生成器。

    (3)生成器的本质就是迭代器

    生成器的本质就是迭代器,需要调用__next__()方法,让生成器执行一次,执行到yield

    (4)yield可以提供返回值

    ①程序再次调用__next__方法,程序继续运行到下一个yield。
    yield可以让函数分段执行

    ②执行__next__方法时,如果没有找到yield程序会报错

    应用:

    (5)send()方法
    next()只能接收数据
    send()可以接收数据,还能给生成器传递消息

  • 相关阅读:
    [转]在efcore 中创建类 通过实现IEntityTypeConfiguration<T>接口 实现实体类的伙伴类 实现FluentApi
    jboss反序列化漏洞(CVE-2017-12149)
    第一阶段 3、javascript
    vue创建新项目
    vue引入git项目运行测试相关
    javascript基础知识梳理
    关于模式识别作业——利用分类器实现手写数字识别
    Guava 学习
    读书清单
    @JsonInclude(Include.NON_NULL)全局配置
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14062526.html
Copyright © 2011-2022 走看看