20180305-Python中迭代器和生成器
一.迭代器
迭代器是访问集合元素的一种方式。迭代器从访问到集合的第一个元素开始访问,直到所有元素被访问结束。而且迭代器只能往前访问,不能后退。另外迭代器的另一个优点,不会事先准备好访问的集合的所有元素。迭代器只有在迭代到某个元素后才会访问元素,而在这之前或之后,元素可以不存在或者销毁,这个特点是他特别适用于访问比较大或者无限的集合。
特点:
1.访问者不需要了解内部结构,仅需通过next()方法不断获取下一个内容
2.不能随机访问集合中的某个元素值,只能从头到尾依次遍历
3.访问到一半时不能回退
4.便于遍历比较大的集合,节省内存
>>> a = iter([1,2,3,4])
>>> a
<list_iterator object at 0x10467b3c8>
>>> a.__next__()
1
>>> a.__next__()
2
>>> a.__next__()
3
>>> a.__next__()
4
>>> a.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
二.生成器
一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就变成了生成器
>>> def func():
yield 1
yield 2
yield 3
yield 4
yield 5
上述代码中,当执行func函数时会生成一个生成器
>>> tmp = func()
>>> tmp.__next__()
1
>>> tmp.__next__()
2
>>> tmp.__next__()
3
>>> tmp.__next__()
4
>>> tmp.__next__()
5
>>> tmp.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
项目实战
利用生成器自定义range
def zrange(num):
start = -1
while True:
start += 1
if start >= num:
return
else:
yield start
20180305-Python中迭代器和生成器的更多相关文章
- 为什么for循环可以遍历list:Python中迭代器与生成器
1 引言 只要你学了Python语言,就不会不知道for循环,也肯定用for循环来遍历一个列表(list),那为什么for循环可以遍历list,而不能遍历int类型对象呢?怎么让一个自定义的对象可遍历 ...
- python中迭代器和生成器。
前言:很多python教程中,对python的解释不容易理解,本文记录自己的理解和体会,是对迭代器和生成器的初步理解. 迭代器: 迭代器的实质是实现了next()方法的对象,常见的元组.列表.字典都是 ...
- python中迭代器和生成器
l=[1,2,3,4] for n in l: print n 在看上面这段代码的时候,我们没有显式的控制列表的偏移量,就可以自动的遍历了整个列表对象.那么for 语句是怎么来遍历列表l的呢?要回答这 ...
- python中迭代器和生成器的区别
#!/usr/bin/python def power(values): for value in values: print "powing %s" % value yield ...
- python中迭代器和生成器的详细解释
https://www.cnblogs.com/wilber2013/p/4652531.html
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- Python之迭代器,生成器
迭代器 1.什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. from collections import Iterable l = [1,2,3,4] t ...
- python之迭代器与生成器
python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i i ...
- day13 python学习 迭代器,生成器
1.可迭代:当我们打印 print(dir([1,2])) 在出现的结果中可以看到包含 '__iter__', 这个方法,#次协议叫做可迭代协议 包含'__iter__'方法的函数就是可迭代函数 ...
- Python之迭代器及生成器
一. 迭代器 1.1 什么是可迭代对象 字符串.列表.元组.字典.集合 都可以被for循环,说明他们都是可迭代的. 我们怎么来证明这一点呢? from collections import Itera ...
随机推荐
- 定位公众号页面,跳转之后 vuejs 失效问题
是第一个页面的. data () { }, 写成了这样,没写返回 {} 5555~. 网页中死活可以,微信中死活不行. data () { return {} },
- vertica copy
copy huimei.ken_copy from '/home/dbadmin/file.txt' delimiter ';'
- DELPHI FMX 获取系统版本 ANDROID IOS通用
引用System.sysutils function getOSInfo:String; begin result:= fomrat('%s:%d.%d', TOSVersion.Name,TOSVe ...
- jquery用法第二波
过滤器 属性过滤选择器: $("div[id]")选取有id属性的<div> $(“#id”) $("div[title=test]")选取titl ...
- HashMap的几种遍历方式(转载)
今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable ...
- Spring学习总结(1)- IOC
一.Spring框架概述 Spring是一个开源免费的框架,为了解决企业应用开发的复杂性而创建.Spring框架是一个轻量级的解决方案,可以一站式地构建企业级应用.Spring是模块化的,所以可以只使 ...
- 1,Spring MVC 学习总结(一)
一,什么是MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示 ...
- Object and Collection Initializers (C# Programming Guide) 类初始化
public class Cat { // Auto-implemented properties. public int Age { get; set; } public string Name { ...
- 解决kubernetes拉取不了镜像仓库的问题
将镜像仓库地址k8s.gcr.io改成registry.aliyuncs.com/google_containers
- The Cats' Feeding Spots
The Cats' Feeding Spots 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In Yan Yuan, the Peking University cam ...