赞
踩
通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。
# 非迭代例子
n = 0
while n < 3:
print('hello world')
n += 1
hello world
hello world
hello world
# 迭代例子
n = 0
while n < 3:
print('第%s次 hello world'%(n+1))
n += 1
第1次 hello world
第2次 hello world
第3次 hello world
前者循环内3次输出" Hello world",输出的数据不依赖上一次的数据,因此不是跌代。而后者的循环内打印的3次数据都上一次循环的影响,所以是迭代。
容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in, not in关键字判断元素是否包含在容器中。
从字面上理解,容器基本上可以包含其他类型对象(如列表、元组、字典等)作为元素的对象;在 Python 常见的数据类型中几乎所有的数据类型(字符串除外)都能包含其它类型的对象;
容器仅仅只是用来存放数据的,我们平常看到的 l = [1,2,3,4] 等等,表面上我们可以直接从列表容器中取出元素,但事实上容器并不提供这种能力,而是可迭代对象赋予了容器这种能力。
可迭代对象并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过__iter__( )
方法或__getitem__( )
方法访问。
Python实现一个通用的外部可以访问可迭代对象内部数据的接口:
__iter__()
方法的作用是让对象可以用 for ... in
循环遍历__getitem__( )
方法是让对象可以通过“实例名[index/key]”的方式访问实例中的元素一个可迭代对象是不能独立进行迭代的,Python中,迭代是通过 for ... in
来完成的。凡是可迭代对象都可以直接用 for...in
循环访问,这个语句其实做了两件事:第一件事是调用 __iter__()
获得一个可迭代器,第二件事是循环调用__next__()
。
可以使用 isinstance()
判断一个对象是否是 Iterable 对象
from collections import Iterable class MyDataType1: # 自定义的数据类型1 def __iter__(self): pass class MyDataType2: # 自定义的数据类型2 pass # 自定义的数据类型实例化 mydatatype1 = MyDataType1() mydatatype2 = MyDataType2() data_info = { "字典":{ }, "列表":[], "字符串":'abc', "元祖":(1,),"集合":{ 1,},"MyDataType1": mydatatype1, "MyDataType2": mydatatype2, "数字":100,"boolen"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。