Python3快速入门——(7)迭代(iterable)和迭代器

简介: 迭代(iterable)#任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环d = {'a': 1, 'b': 2, 'c': 3} #对dict迭代for k,v in d.
迭代(iterable)

#任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环
d = { 'a' : 1 , 'b' : 2 , 'c' : 3 } #对dict迭代
for k,v in d.items(): # 如果要同时迭代key和value,可以用for k, v in d.items()
print (k,v)
#默认情况下,dict迭代的是key # 如果要迭代value,可以用for value in d.values()
#字符串也是可迭代对象,因此,也可以作用于for循环
#如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断
from collections import Iterable #导入collections模块的Iterable类型
n= isinstance (d,Iterable)
print (n) #结果为True,可迭代

#Python内置的 enumerate 函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
names=[ 'a' , 'b' , 'c' , 'd' ]
for i,value in enumerate (names): #for循环同时引用两个变量
print (i,value)

for x,y in [( 1 , 2 ),( 3 , 5 ),( 5 , 6 )]: ##for循环同时引用两个变量
print (x,y)

迭代器
可以直接作用于 for 循环的数据类型有以下几种:
一类是 集合数据类型 ,如 list tuple dict set str 等;
一类是 generator ,包括生成器和带 yield 的generator function。
这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable
#可以使用isinstance()判断一个对象是否是Iterable对象
from collections import Iterable
m= isinstance ([],Iterable) #True
#而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,
# 直到最后抛出StopIteration错误表示无法继续返回下一个值了。
#可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

#生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
#把list、dict、str等Iterable变成Iterator可以使用iter()函数
from collections import Iterator
m= isinstance ( iter ( 'abc' ),Iterator) #True
凡是可作用于 for 循环的对象都是 Iterable 类型;
凡是可作用于 next() 函数的对象都是 Iterator 类型,它们表示一个惰性计算的序列;
集合数据类型如 list dict str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。
Python的 for 循环本质上就是通过不断调用 next() 函数实现的



相关文章
|
1月前
|
Python
【10月更文挑战第18天】「Mac上学Python 29」基础篇10 - 循环结构与迭代控制
在Python中,循环结构是控制程序执行的重要工具。通过学习本篇内容,您将掌握如何使用for循环和while循环来高效地处理重复任务,并了解break、continue和else的使用方式。同时,我们还会探索嵌套循环和典型应用场景中的实际应用。
39 2
|
1月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
22天前
|
存储 程序员 数据处理
深入理解Python中的生成器与迭代器###
本文将探讨Python中生成器与迭代器的核心概念,通过对比分析二者的异同,结合具体代码示例,揭示它们在提高程序效率、优化内存使用方面的独特优势。生成器作为迭代器的一种特殊形式,其惰性求值的特性使其在处理大数据流时表现尤为出色。掌握生成器与迭代器的灵活运用,对于提升Python编程技能及解决复杂问题具有重要意义。 ###
|
1月前
|
存储 索引 Python
Python 迭代器是怎么实现的?
Python 迭代器是怎么实现的?
31 6
|
2月前
|
索引 Python
解密 Python 迭代器的实现原理
解密 Python 迭代器的实现原理
48 13
|
2月前
|
机器学习/深度学习 设计模式 大数据
30天拿下Python之迭代器和生成器
30天拿下Python之迭代器和生成器
20 3
|
2月前
|
Python
python之迭代
python之迭代
|
1月前
|
存储 大数据 数据处理
理解Python中的生成器:高效迭代的秘密
【10月更文挑战第8天】理解Python中的生成器:高效迭代的秘密
36 0
|
1月前
|
存储 大数据 Python
Python 中迭代器与生成器:深度解析与实用指南
Python 中迭代器与生成器:深度解析与实用指南
18 0
|
2月前
|
Python
Python中的zip:高效处理并行迭代的利器
Python中的zip:高效处理并行迭代的利器
26 0
下一篇
无影云桌面