python next()和iter()函数原理解析

这篇文章主要介绍了python next()和iter()函数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

我们首先要知道什么是可迭代的对象(可以用for循环的对象)Iterable:

一类:list,tuple,dict,set,str

二类:generator,包含生成器和带yield的generatoe function

而生成器不但可以作用于for,还可以被next()函数不断调用并返回下一个值,可以被next()函数不断返回下一个值的对象称为迭代器:Iterator

生成器都是Iterator对象,但list,dict,str是Iterable,但不是Iterator,要把list,dict,str等Iterable转换为Iterator可以使用iter()函数

next()用法:

next(iterator[, default])

  • iterator -- 可迭代对象
  • default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
>>> list_ = [1,2,3,4,5]
>>> it = iter(list_)
>>> next(it,'-1')
>>> next(it,'-1')
>>> next(it,'-1')
>>> next(it,'-1')
>>> next(it,'-1')
>>> next(it,'-1')
'-1'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈Python生成器generator之next和send的运行流程(详解)

    对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数. 然后第二个next调用,进入生成器函数后,从yield语句的下一句语句(第5行)开始执行,然后重新运行到yield语句,执行后,跳出生成器函数,后面再次调用next,依次类推. 下面是一个列子: def consumer(): r = 'here' for i in xrange(3): yield r r = '200 OK'+ str(i)

  • python中的itertools的使用详解

    今天了解了下python中内置模块itertools的使用,熟悉下,看能不能以后少写几个for,嘿嘿

  • Python内置函数 next的具体使用方法

    Python 3中的File对象不支持next()方法. Python 3有一个内置函数next(),它通过调用其next ()方法从迭代器中检索下一个项目. 如果给定了默认值,则在迭代器耗尽返回此默认值,否则会引发StopIteration. 该方法可用于从文件对象读取下一个输入行. 语法 以下是next()方法的语法 - next(iterator[,default]) 参数 iterator − 要读取行的文件对象 default − 如果迭代器耗尽则返回此默认值. 如果没有给出此默认值,

  • python中reader的next用法

    python中有个csv包(build-in),该包有个reader,按行读取csv文件中的数据 reader.next()作用:打印csv文件中的第一行标题header (python3中的用法) allElectronicsData = open(r'C:/pydata/AllElectronics.csv', 'rt') reader = csv.reader(allElectronicsData) headers = next(reader) (python2中的用法) allElect

  • 对python中的iter()函数与next()函数详解

    list.tuple等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器.然后我们可以对获取到的迭代器不断使⽤next()函数来获取下⼀条数据.iter()函数实际上就是调⽤了可迭代对象的 __iter__ ⽅法. >>> li = [11, 22, 33, 44, 55] >>> li_iter = iter(li) >>> next(li_iter) 11 >>> next(li_iter) 22 >&g

  • python使用writerows写csv文件产生多余空行的处理方法

    初次接触python,学艺不精,第一次实战写一个文本处理的小程序时便遇到了头疼的问题. 先看代码: 生成的.CSV文件每两行之间都会多出一行空格(如下图),具体原因可参看点击打开链接 with open('E:\\test.csv','wt')as fout: cout=csv.DictWriter(fout,list_attrs_head )#list_attrs_head头属性列表 cout.writeheader() cout.writerows(list_words) 上面链接中的这位大

  • 对Python 3.2 迭代器的next函数实例讲解

    在python中,使用iter函数可以获得有序聚合类型的迭代器,我个人将迭代器理解为带有next指针的单向链表,获取到的迭代器为链表的表头,表头内容为空,next指针指向有序聚合类型的第一个元素.在访问链表最后一个元素的next指针时,python会报错StopIteration. Python3.x以上的版本在使用next函数时需要注意的是:next()函数在3.x以上的版本更改为__next__(). 使用for迭代器打印文件中的内容的代码如下: file_obj=open(r'E:\Pro

  • Python标准库itertools的使用方法

    Python标准库itertools模块介绍 itertools是python内置的模块,使用简单且功能强大,这里尝试汇总整理下,并提供简单应用示例:如果还不能满足你的要求,欢迎加入补充. 使用Python标准库itertools只需简单一句导入:import itertools chain() 与其名称意义一样,给它一个列表如 lists/tuples/iterables,链接在一起:返回iterables对象. letters = ['a', 'b', 'c', 'd', 'e', 'f']

  • 在Python中使用next()方法操作文件的教程

    next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如ReadLine()相结合next()方法工作不正常.然而,usingseek()将文件重新定位到一个绝对位置将刷新预读缓冲器. 语法 以下是next()方法的语法: fileObject.next(); 参数 NA 返回值 此方法返回下一个输入行. 例子 下面的示例演示next()方法的使用. #!/

  • python利用itertools生成密码字典并多线程撞库破解rar密码

    脚本功能: 利用itertools生成密码字典(迭代器形式) 多线程并发从密码字典中取出密码进行验证 验证成功后把密码写入文件中保存 #!/usr/bin/env python # -*- coding: UTF-8 -*- # Author:Leslie-x import itertools as its import threading import rarfile import os words = '0123456789abcdefghijklmnopqrstuvwxyz' # 涉及到生

随机推荐