直接用作于for循环的数据类型有以下几种:

1、集合类的数据类型:list tuple dict set str等

2、生成器generator,包括生成器和带有yiled 的generator function

上面这些可以直接用于for循环的对象统称为可迭代的对象Iterable。

 #coding=utf-8

 from collections import Iterable

 print(isinstance({}, Iterable))  #True
print(isinstance([], Iterable)) #True
print(isinstance('iterable', Iterable)) #True
print(isinstance((), Iterable)) #True
print(isinstance(100, Iterable)) #False

迭代器:可以被next()调用不断返回下一个值的对象称之为迭代器(Iterator)

 from collections import Iterator

 print(isinstance({}, Iterator))  #False
print(isinstance([], Iterator)) #False
print(isinstance('iterable', Iterator)) #False
print(isinstance((), Iterator)) #False
print(isinstance((x for x in range(5)), Iterator)) #True #上述可知,列表、字典、字符串、元祖等都不属于迭代器(Iterator)

可迭代对象能否变成迭代器呢?通多内置方法iter()可以实现

 from collections import Iterator

 print(isinstance(iter({}), Iterator))  #True
print(isinstance(iter([]), Iterator)) #True
print(isinstance(iter('iterable'), Iterator)) #True
print(isinstance(iter(()), Iterator)) #True
print(isinstance((x for x in range(5)), Iterator)) #True

小结:

 #Python的For循环本质就是不断通过调用next函数实现的例如下面两段代码

 #代码一

 for x in range(10):
print(x) #代码二
it = iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
while True:
try:
x = next(it)
print(x)
except StopIteration:
break
#代码一与代码二等价

Python之路----------迭代器的更多相关文章

  1. Python之路迭代器协议、for循环机制、三元运算、列表解析式、生成器

    Python之路迭代器协议.for循环机制.三元运算.列表解析式.生成器 一.迭代器协议 a迭代的含义 迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的 ...

  2. python之路——迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

  3. 百万年薪python之路 -- 迭代器

    3.1 可迭代对象 3.1.1 可迭代对象定义 **在python中,但凡内部含有 _ _ iter_ _方法的对象,都是可迭代对象**. 3.1.2 查看对象内部方法 该对象内部含有什么方法除了看源 ...

  4. python之路--迭代器和生成器

    迭代: 迭代器协议: 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...

  5. Python之路----迭代器与生成器

    一.迭代器 L=[1,,2,3,4,5,] 取值:索引.循环for 循环for的取值:list列表 dic字典 str字符串 tuple元组 set f=open()句柄 range() enumer ...

  6. Python之路-迭代器 生成器 推导式

    迭代器 可迭代对象 遵守可迭代协议的就是可迭代对象,例如:字符串,list dic tuple set都是可迭代对象 或者说,能被for循环的都是可迭代对象 或者说,具有对象.__iter__方法的都 ...

  7. 【Python之路】特别篇--生成器(constructor)、迭代器(iterator)、可迭代对象(iterable)

    生成器(constructor) 生成器函数在Python中与迭代器协议的概念联系在一起.包含yield语句的函数会被特地编译成生成器 !!! 当函数被调用时,他们返回一个生成器对象,这个对象支持迭代 ...

  8. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  9. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

随机推荐

  1. VS2015 自动添加头部注释

    让VS自动生成类的头部注释,只需修改两个文集即可,一下两个路径下个有一个 Class.cs文件 D:\Program Files (x86)\Microsoft Visual Studio 14.0\ ...

  2. SQL 2012 Group By Rollup, Grouping

    GO alter proc [zsp_BranchsData] as begin /* CREATE TABLE [原始机构数据] ( [序号] [varchar](50) NULL, [一级分行号] ...

  3. Oracle的索引适用范围

    若字段数据的重复率不是很高,而且数据量不是很大,考虑B树索引: 若字段数据的重复率较高,而且查询中有特定的查询方式(比如列之间有或,与等逻辑运算),则考虑位图索引: 若对列中的字段进行模糊查询或者语言 ...

  4. 一把鼻涕一把泪 搭建公网ftp服务器

    至于为什么要搭建公网ftp服务器,就当我心血来潮吧. ftp开源工具很多,咱用的是filezilla服务器.后来为了方便搭建web服务器,就改成了集成工具xampp.客户端工具也是filezilla ...

  5. MD5 、 加密工具

    package com.cgcyiliao.server.util; import java.security.MessageDigest; import java.security.NoSuchAl ...

  6. 【软件推荐】 Moom-窗口布局软件(V.3.2.2)【破解+汉化】

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书”     下载地址: 软件:https://yunpan.cn/cuTg8rCMTsLT6 ...

  7. Apple Pay--iOS开发

    一.什么是Apple Pay? 1. 概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借 ...

  8. BZOJ 1260&UVa 4394 区间DP

    题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...

  9. html的笔记

    网页标准(w3c) ☞结构标准    html(骨骼)☞表现标准    CSS(美化师)☞行为标准    JavaScript(动作) 1.1 浏览器介绍 主流浏览器:       ◆内核: 渲染引擎 ...

  10. 解决Windows Server2008R2中导入Excel不能使用Jet 4.0

    操作系统使用了Windows Server2008R2(Windows Server2008R2是64位系统,同时配置IIS7.0 原读取Excel文件代码为: string strConn = st ...