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'
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
浅谈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' # 涉及到生
随机推荐
- Angular.Js的自动化测试详解
- 华众HZHOST虚拟主机管理系统服务器IP更换详细步骤说明
- .Net 垃圾回收机制详细介绍
- PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
- php IP转换整形(ip2long)的详解
- C#实现将应用程序设置为开机启动的方法
- JavaScript中使用concat()方法拼接字符串的教程
- php常用Output和ptions/Info函数集介绍
- 使用FSO修改文件夹的名称实现文件转移防盗链
- jQuery实现表格行上下移动和置顶效果
- jquery 合并内容相同的单元格(示例代码)
- 详细介绍Linux的定时任务crontab
- Linux系统概述
- Nginx(Tengine)启用 SPDY 支持的配置方法
- HipChat上传文件报未知错误的原因分析及解决方案
- C基础 mariadb处理的简单实例
- 浅谈C#各种数组直接的数据复制/转换
- php连接MSsql server的五种方法总结
- vue项目实现表单登录页保存账号和密码到cookie功能
- PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能