#-*- 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. 剑指:求1+2+…+n

    题目描述 求 1+2+…+n,要求不能使用 乘除法.for.while.if.else.switch.case 等关键字及条件判断语句 A?B:C. 样例 输入:10 输出:55 解法 前面的和+后一 ...

  2. 转摘python3.4 + pycharm 环境安装 + pycharm使用

    遇到很多初学者的盆友,来问python环境安装的问题..因此,这篇文章就诞生了.. 因个人是windows的环境,所以本文只讲windows环境下的python安装. 作为初用python的盆友,强烈 ...

  3. Linux shell if条件判断2

    前面介绍linux shell的if判断的语法,现在再补充一点. Linux shell if条件判断1 分支判断结构     if , case   下面两个结构语法,已经在前面有过示例. 结构1: ...

  4. ansible自动化运维02

    ansible清单管理 inventory文件通常用于定义要管理主机的认证信息,例如:ssh登录用户名,密码,以及key相关信息. 举个例子:定义清单组 注意:组名为pro,关键字段children表 ...

  5. 【转】Pandas学习笔记(一)基本介绍

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  6. POJ 2516Minimum Cost(最小费用流+特判)

    [题意]: 有N个人,M个仓库,每个人需要物品,个数都等于共同的K,仓库中有对应的K件物品的数量,随后给K个N*M矩阵(小写k, n, m表示K,N,M对应的子集),表明m个仓库到第n个人的位置运送k ...

  7. ActiveMQ消息可靠性-持久性

    三个方面保证消息的可靠性 1.消息的持久 2.事物 3.签收 一:PERSISTENT:持久性   参数说明:1.持久   2.非持久 Java里面设置持久化和非持久 持久: 将持久性设置为持久 宕机 ...

  8. keil中使用——变参数宏__VA_ARGS__

    本文说的__VA_ARGS__,就是一个可变参数宏,与printf中可变参数的宏定义一个道理,是新C99规范中增加的. __VA_ARGS__详情内容 1.关于__VA_ARGS__ __VA_ARG ...

  9. 转 Git生成SSH

    SSH keys SSH key 可以让你在你的电脑和Code服务器之间建立安全的加密连接. 先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_rsa.pub 如果你看到一长串以 ...

  10. Spring Cloud微服务安全实战_3-4_API安全机制之认证

     认证:登录和认证是 两个概念,比如你两周.一个月,可能只登录了一次,但认证却是每次访问都要经过的步骤. 对于图中的认证不成功,也要继续处理,这个我觉得得看业务,比如管理系统,不登录就不让你访问,但对 ...