如果对象的属性中有__iter__属性就说明是可迭代的,容器类的数据类型都是可迭代对象

如果对象的属性中既有__iter__属性也有__next__属性,就说明这个对象是迭代器

如何判断一个函数是不是可迭代的,是不是迭代器

方法一

s = ''
print('__iter__' in dir(s)) #如果是可迭代内部将存在__iter__属性
f = open('01 今日内容大纲', encoding='utf-8', mode='r')
print('__next__' in dir(f)) #如果是迭代器内置属性有 __iter__ 和 __next__

方法二

from collections.abc import Iterable
from collections.abc import Iterator
print(isinstance(s, Iterable))
print(isinstance(f, Iterator))

可迭代对象转换为迭代器

方法一

s_1 = s.__iter__()

方法二

s_2 = iter(s)

迭代器的取值f.__next__() 每次都只能取一次

可迭代对象不能取值, 迭代器可以取值的

迭代器非常节省空间,内存中只存在一个值

迭代器每次只取一个值

迭代器是单向的,不会反复一路走到黑

迭代器的应用场景:数量大,且只用于取值

运用__next__ 进行取值操作

iter1 = s1.__iter__()
while True:
try:
print(iter1.__next__()) #一直取值
except StopIteration: #接受读取完后的异常处理
break

跟着太白老师学python day11 可迭代对象和迭代器的更多相关文章

  1. 跟着太白老师学python day11 闭包 及在爬虫中的基本使用

    闭包的基本概念: 闭包 内层函数对外层函数的变量(不包括全局变量)的引用,并返回,这样就形成了闭包 闭包的作用:当程序执行时,遇到了函数执行,它会在内存中开辟一个空间,如果这个函数内部形成了闭包, 那 ...

  2. 跟着太白老师学python day11 函数名的应用 globals(), locals()

    1.  函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> ...

  3. 跟着太白老师学python day10 函数嵌套, global , nonlocal

    函数嵌套: 第一种嵌套方法 def func(): count = 123 def inner(): print(count) inner() func() 第二种嵌套方法 count = 123 d ...

  4. 跟着太白老师学python day10 名称空间,作用域和取值顺序,变量的加载顺序

    名称空间分为3种: 1. 全局名称空间 2. 内置名称空间 3. 局部名称空间(临时) 作用域 全局作用域              1全局名称空间 2 内置名称空间 局部作用域           ...

  5. 跟着太白老师学python 10day 函数的动态参数 *args, **kwargs, 形参的位置顺序

    1. *args 接收实参的位置参数, **kwargs接收实参的关键字参数 def func(*args, **kwargs): print(args, kwargs) func(1, 2, 3, ...

  6. 跟着太白老师学python 09day 初识函数

    函数的最主要的目的:封装一个功能 函数的优点: 减少代码的复用率, 增加代码的阅读性 def my_len(arvg): # arvg 形参 my_len函数名,应该具有代表性,让你一看就明白 # 函 ...

  7. day08 跟着太白老师学python 文件操作

    文件操作初识: 1. 文件路径 :d:/护士主妇空姐联系方式  (文件路径不要太过复杂,容易碰到转义字符的问题, 当碰到转义字符时,需要在前面+r,或者采用双斜杠(//)) 2. 编码方式 :utf- ...

  8. python中可迭代对象、迭代器、生成器

    可迭代对象 关注公众号"轻松学编程"了解更多. 1.列表生成式 list = [result for x in range(m, n)] g1 = (i for i in rang ...

  9. Python之可迭代对象、迭代器、生成器

    在使用Python的过程中,很容易混淆如下几个关联的概念: 1.容器(container) 2.可迭代对象(Iterable) 3.迭代器(Iterator) 4.生成器(generator) 5.生 ...

随机推荐

  1. Python递归输出字典所有不同深度的路径

    应用场景 假设有这样一个字典结构test_dict = {'a':{'b':{'c':1}},'d':2},test_dict其实可以看作是一种树状结构,其中每个叶子节点深度不一定相同,如果我们希望输 ...

  2. JS格式化数字(每三位加逗号)

    function toThousands(num) { var num = (num || 0).toString(), result = ''; //判断是否带小数点 if (num.split(' ...

  3. tomcat错误:The page you tried to access (/manager/login.do) does not exist

    今天在idea上跑一个项目,所有配置都正常,其他接口测试也正常.唯独“/manage/user”接口在测试的时候后台没反应,也就是程序根本没往下走,postman测试显示如下: 浏览器范围url连接显 ...

  4. c# 图片转流 流转文件

    //----引入必要的命名空间 using System.IO; using System.Drawing.Imaging; //----代码部分----// private byte[] photo ...

  5. PHP和JS页面跳转和刷新总结

    PHP 页面跳转: // 只是跳转,所以一定要用die();或者exit;终止下一步操作; header('location:index.php'); exit; // 等待3秒,跳转并刷新 head ...

  6. 百度编辑器ueditor更改图片默认编辑工具

    点击图片编辑器默认出现的工具 需求是点击图片不出现默认样式,而是在编辑器外出现图片属性编辑框,需求效果如下 我的做法是在css里面将默认出现的工具隐藏,然后直接在ueditor.all.js里面修改S ...

  7. 什么是虚拟环境、为什么使用虚拟环境、Anaconda创建、激活、退出、删除虚拟环境

    一.虚拟环境 virtual environment 它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容 ...

  8. 将 PCB 文件转换为可读的文本

    将 PCB 文件转换为可读的文本 将元件转成列表. 坐标也放到列表中. 以元件号为排序. 使用 json 格式,并格式,方便对比. 元件网络转成单独文件. 特殊说明生成单独文件.

  9. Android adb push 和 adb pull

    将电脑 D 盘 libreference-ril.so 文件拷贝到安卓设备的 /system/lib 目录下 $ adb remount $ adb root $ adb push D:\libref ...

  10. erlang的调试配置

    distel可以断点调试erlang,但是步骤非常繁琐 以下面的测试脚本为例说明 geometry.erl -module(geometry). -export([area/1]). area({re ...