#-*- coding:utf-8 -*-

a=[1,2,3,4]
for i,j in enumerate(a):
print i,j '''只有ij时,''' a=[1,2,3,4]
for i in enumerate(a):
print i
'''只有i 时,''' dic={1:'a',2:'c','d':4}
for i in enumerate(dic):
print i
'''是字典时,对应得是key''' b=[1,2,4,5,6,7,]
for index,i in enumerate(b): print index,i
b[index]+=1
print(b)
print('jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj') c=[1,2,4,6,7,8]
c=map(lambda x:x+1,c)
for i in c:
print i
print (type(c))
'''产生的是一个list所以要循环打印,'''
l=[j+1 for j in range(10)]
print l
print (type(l))
'''产生的是一个list生产序列''' g=(j+1 for j in range(10))
print g #这里这句打印的是g生成器的内存地址
print (type(g))
#print g.next()调用生成器的.next()可以显示生成器里的计算出来的元素,
# 但一次调用只能显示一个元素,可以采用for循环来显示所有元素.可迭代对象
for i in g:
print i print('jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj') '''斐波那函数的编程
def fib(max):
n,a,b=0,0,1
while n<max:
print b
a,b=b,a+b
n+=1 fib(10)
'''
def pluse (a,b):
print (a+b)
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n += 1 data=fib(10)
print (data.next())
print (data.next())
pluse(100,200)
print (data.next())
print ('hahahhhahhahha')
print (data.next())
print (data.next())
print (data.next())

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的

#-*- coding:utf-8 -*-
from collections import Iterator
print (isinstance((),Iterator))
print (isinstance([],Iterator))
print (isinstance('adf',Iterator))
print (isinstance([i *2 for i in range(10)],Iterator)) print (isinstance((i *2 for i in range(10)),Iterator))#是生成器 #可以直接用于for循环的对象为可迭代对象
print ('jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj') from collections import Iterable
print (isinstance((),Iterable))
print (isinstance([],Iterable))
print (isinstance({},Iterable))
print (isinstance('adf',Iterable))
print (isinstance([i *2 for i in range(10)],Iterable))
print (isinstance((i *2 for i in range(10)),Iterable))#是生成器
#可以直接被next()函数调用并不断返回下一个值得对象称为迭代器 l=[1,2,6,8,9]
It=iter(l)
print It
print (isinstance(It,Iterator))

python 笔记——生成器和迭代器的更多相关文章

  1. Python中生成器和迭代器的区别(代码在Python3.5下测试):

    https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...

  2. python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解

    python中"生成器"."迭代器"."闭包"."装饰器"的深入理解 一.生成器 1.生成器定义:在python中,一边 ...

  3. python语法生成器、迭代器、闭包、装饰器总结

    1.生成器 生成器的创建方法: (1)通过列表生成式创建 可以通过将列表生成式的[]改成() eg: # 列表生成式 L = [ x*2 for x in range(5)] # L = [0, 2, ...

  4. python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解

    一.生成器 1.什么是生成器? 在python中,一边循环一边计算的机制,称为生成器:generator. 2.生成器有什么优点? 1.节约内存.python在使用生成器时对延迟操作提供了支持.所谓延 ...

  5. python中生成器与迭代器

    可迭代对象:一个实现了iter方法的对象是可迭代的 迭代器:一个实现了iter方法和next方法的对象就是迭代器 生成器都是Iterator对象,但list.dict.str虽然是Iterable(可 ...

  6. Python之生成器、迭代器

    生成器 生成器类似返回值为数组的一个函数,这个函数可以接受参数,可被调用,但只能产生一个值,所以大大节省内存. 生成器表达式的语法非常简单,只需要将列表推导式的中括号改成小括号就可以了 [x+x fo ...

  7. Python中生成器和迭代器的功能介绍

    生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...

  8. python的生成器和迭代器

    三.推倒式从时间上比较:集合 字典 元祖 列表 (从小到大)占用内存比较:字典 集合 列表 元祖 (从大到小) 字典是可进行hash操作,操作的是字典的key ,而对list进行hash操作的时候操作 ...

  9. Python笔记(十)_迭代器与生成器

    迭代 用for...in来遍历一个可迭代对象的过程就叫迭代 可迭代对象:列表.元组.字典.集合.字符串.生成器 可以使用内置函数isinstance()判断一个对象是否是可迭代对象 >>& ...

随机推荐

  1. 基于wince系统开发的 SQLServe Mobile数据库应用

    SQLServe Mobile数据库以前的版本是SQLServe CE,现在最新的是3.5的版本,最近用vs2008做了一个小程序,是对SQLServe Mobile数据库读写数据. 注:SQLSer ...

  2. maven 学习---Maven本地资源库

    Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹. 很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库. ...

  3. Django Template语法中 OneToOne、ForeignKey 外键查询

    主表的Models的结构 class A(models.Model): username = models.CharField(max_length=32, verbose_name='用户名称') ...

  4. Reactive-MongoDB 异步 Java Driver 解读

    一.关于 异步驱动 从3.0 版本开始,MongoDB 开始提供异步方式的驱动(Java Async Driver),这为应用提供了一种更高性能的选择.但实质上,使用同步驱动(Java Sync Dr ...

  5. svn忽略target文件

    背景:最近项目转移到svn上 发现:项目从svn拉取下来到eclipse中,发现有大量的文件改动,一看都是一些.project之类的配置文件或者是target文件夹,或者下面的文件 这些东西肯定是不需 ...

  6. 压缩,解压缩 和tar详细介绍

    文件压缩/解压缩  gzip   bzip2  xz 只能压缩文件,不能压缩文件夹(压缩完后,文件会消失) 先建三个文件来进行演示 touch ./{1..3}.txt  文件已经创建好,下面就开始介 ...

  7. 基于KVM的虚拟机创建

    KVM基本介绍:   KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中,KVM目前 ...

  8. 201871010107-公海瑜《面向对象程序设计(java)》第二周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第二周学习总结             项目                          内容   这个作业属于哪个课 ...

  9. 201871010118-唐敬博《面向对象程序设计(Java)》第四周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  10. robotframework连接mysql

    1.安装mysql数据库,并启动,创建数据库test及user表(可以自定义) 2.配置robotframework环境加载DatabaseLibrary 3.安装pymysql,下载地址:https ...