python学习10—迭代器

python学习10—迭代器

1. 迭代器协议

对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往后走不能往前退)

2. 可迭代对象

实现了迭代器协议的对象,对象内部定义一个__iter__()方法

3. for循环实现机制

  字符串、列表,元组,字典,集合,文件等都不具有next方法,所以他们都不是可迭代对象(iterable object),但是为什么for循环可以进行呢?

  原因:for循环首先调用了他们的内置方法__iter()__方法将其转换为可迭代对象,然后再调用这个转换后的可迭代对象的__next()__方法,进行迭代。

l = [1,2,3]
# iterable object
iter_l = l.__iter__()
print(iter_l.__next__())

  字符串、列表、元组为有序序列,也可以通过索引取值,但是字典、集合、文件等非序列类型,不可以通过索引取值,所以出现了for循环,一个基于迭代器协议的统一的遍历方式。

4. 使用while循环实现for循环机制

l = [1,2,3]detail_l=l.__iter__()
while True:
    try:
        print(detail_l.__next__())
    except StopIteration:
        print(‘end of iteration‘)
        break

原文地址:https://www.cnblogs.com/yangjingxuan/p/11705927.html

时间: 2024-10-28 19:07:04

python学习10—迭代器的相关文章

Python学习笔记——迭代器和生成器

1.手动遍历迭代器 使用next函数,并捕获StopIteration异常. def manual_iter(): with open('./test.py') as f: try: while True: line = next(f) print line except StopIteration: pass next函数也可以指定值来标记结尾 def manual_iter(): with open('./test.py') as f: try: while True: line = nex

Python学习之==>迭代器

一.概要 在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让人一头雾水,下面这幅图也许能让大家更清楚的理解他们之间的关系. 二.容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in , not in 关键字判断元素是否包含在容器中.

python学习之迭代器与生成器

1.迭代器省内存 迭代器只允许往后读数据,不允许回读数据 迭代器不能跳着读文件,因为他是一点一点加载文件内容到内存的,读完了可以销毁或丢掉 2.生成一个迭代器 a = iter(["fd", "ss", "dd", "ff"]) 3.迭代器方法: python3.0以上:__next__(): python2.7:next() a.__next__()   读取的是fd a.__next__()   读取的是ss a.__ne

Python学习笔记——迭代器

什么是迭代器: 它为类序列对象提供了一个类序列的接口.它们是一组数据结构,你可以利用它们的索引从0开始一直“迭代”到序列的最后一个条目. 如何用迭代器: (1)序列中的使用 >>>myTuple = (1, 2, 3) >>>i = iter(myTuple) >>>i.next() 1 >>>i.next() 2 >>>i.next() 3 >>>i.next() Traceback (most

Python学习笔记——迭代器(RandSeq和AnyIter)

1.RandSeq #coding:utf-8 #!/usr/bin/env python 'randSeq.py -- 迭代' #从random模块里仅仅导入choice方法 from random import choice class RandSeq(object): def __init__(self,seq): self.data = seq; def __iter__(self): return self; def next(self): return choice(self.dat

Python学习-10.Python函数定义(二)

在Python中定义函数的时候,可以使用参数默认值的方式定义函数 例子: 1 def welcome(who,state='is',action='talking'): 2 print(who,state,action) 调用函数: 1 welcome('Tom') 输出Tom is talking 1 welcome('Tom','was') 输出Tom was talking 1 welcome('Tom',action='sleeping') 输出Tom is sleeping 可见,在参

python学习-10 运算符1

1.加+,减-,乘*,除/ 例如: a = 1 b = 2 c = a + b print(c) 运算结果: 3 Process finished with exit code 0 a = 1 b = 2 c = a - b print(c) 运算结果: -1 Process finished with exit code 0 a = 1 b = 2 c = a * b print(c) 运算结果: 2 Process finished with exit code 0 a = 1 b = 2

Python学习之三大名器-装饰器、迭代器、生成器

Python学习之三大名器-装饰器.迭代器.生成器 一.装饰器     装饰,顾名思义就是在原来的基础上进行美化及完善,器这里指函数,所以说装饰器就是装饰函数,也就是在不改变原来函数的代码及调用方式的前提下对原函数进行功能上的完善.其核心原理其实是利用闭包.     格式 @关键字+装饰函数          被装饰函数()      注意:@行必须顶头写而且是在被装饰函数的正上方     按照形式可以分为:无参装饰器和有参装饰器,有参装饰器即给装饰器加上参数     以下示例是一个无参装饰器,

Python学习之旅—Day07(生成器与迭代器)

前言 本篇博客主要专注于解决函数中的一个重要知识点--生成器与迭代器.不管是面试还是工作,生成器与迭代器在实际工作中的运用可以说是非常多,从我们第一天开始学习for循环来遍历字典,列表等数据类型时,我们就已经和生成器,迭代器打交道了!本篇博客从最基础的基本概念,例如容器,可迭代对象,生成器,迭代器的概念,到for循环是怎么工作的娓娓道来.希望本篇博客能够帮助大家切实掌握生成器与迭代器的使用与底层原理. 一.容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in