首页 > 其他分享 >迭代器对象和可迭代对象

迭代器对象和可迭代对象

时间:2023-01-03 11:02:08浏览次数:39  
标签:迭代 对象 iter isinstance Iterable muns

可迭代对象

可以被for循环的对象
判断是否是可迭代对象
from collections.abc import Iterable
my_str = 'abcd'
isinstance(my_str, Iterable) # True

迭代器

迭代器是一个可以记住遍历位置的对象,迭代器从第一个元素开始访问,直到所有元素被访问完,迭代器只能往前,不能后退

list/dict/str..都是可迭代对象,通过iter()可以取到迭代器,通过next()可以获取下一条数据,当没有数据的时候会抛出一个Stopiteration异常,for循环本质就是使用了iter()next()加上异常捕获

iter(可迭代对象)获取可迭代对象迭代器

next(迭代器)获取迭代器的值

nums_list = [1, 2, 3, 4]
print(type(nums_list)) # <class 'list'>

num_iter = iter(nums_list)
print(type(num_iter))  # <class 'list_iterator'>

迭代器对象可迭代对象

# 迭代器对象 一定是 可迭代对象
# 可迭代对象 不一定的 迭代器对象
from collections.abc import Iterable
from collections.abc import Iterabor
muns = [1,2,3]
muns_iter = iter(nums)

isinstance(muns, Iterable) # True
isinstance(muns, Iterabor) # False

isinstance(muns_iter, Iterable) # True
isinstance(muns_iter, Iterabor) # True

标签:迭代,对象,iter,isinstance,Iterable,muns
From: https://www.cnblogs.com/lxd670/p/17021458.html

相关文章

  • 在多线程创建TFPHTTPClient对象并发送请求时出现Could not initialize OpenSSL librar
    在多线程创建TFPHTTPClient对象并发送请求时出现CouldnotinitializeOpenSSLlibrary应该怎么解决?单线程的时候没有遇到。经网友指导下使用以下方法就可以解决这个问题:......
  • Android Serializalbe对象序列化
    Serializalbe接口概述Marksclassesthatcanbeserializedby ​​ObjectOutputStream​​ anddeserializedby ​​ObjectInputStream​​.Warning: thisinterfac......
  • Scanner对象
    Scanner对象​之前学习的语法中并没有实现程序与人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是java5的新特征,可以通过Sc......
  • Spring 事务源码(三):事务相关对象的创建
    事务源码(二)中,已经分析了beanDefinition的加载,下面来创建对应beanDefinition的bean。1、PropertySourcesPlaceholderConfigurer创建占位符处理的beanPropertyS......
  • Spring AOP源码(四):创建被代理类的代理对象
    在AOP源码(三):创建AOP相关的Bean中,介绍了Spring创建AOP的Advisor、AnnotationAwareAspectJAutoProxyCreator的创建,其中被代理类的代理对象是如何创建的未做说明,下面来......
  • JavaScript 对象-三种创建对象的方式,遍历获取到对象。
    JavaScript对象-三种创建对象的方式,遍历获取到对象。目录JavaScript对象-三种创建对象的方式,遍历获取到对象。1.对象1.1什么是对象?1.2为什么需要对象2.创建对象的......
  • C++ | 3-需要函数对象的容器
    函数对象及其特化首先来讨论一下两个重要的函数对象,less和hash。们先看一下less,小于关系。在标准库里,通用的less大致是这样定义的:template<classT>structless......
  • vue2修改数组/对象的值后,页面视图不更新的解决方法
    1.对象刷新:通过使用vue.$set方法,实现动态添加/修改对象属性语法:vue.$set(对象名,键名,值)Vue.$set(this.postForm,'set_last_buyday','属性值')//第一种写法用vue.$sett......
  • 【C++高级编程】(三)面向对象设计
    本章内容:什么是面向对象的程序设计如何定义不同对象之间的关系抽象的重要性以及如何在设计中使用抽象()  3.1过程化的思考方式    3.2面向对象思想......
  • Python类与对象详解
    一、类和对象类的意思:种类、分类、类别对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就......