python 笔记——生成器和迭代器
#-*- 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类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是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 笔记——生成器和迭代器的更多相关文章
- Python中生成器和迭代器的区别(代码在Python3.5下测试):
https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...
- python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解
python中"生成器"."迭代器"."闭包"."装饰器"的深入理解 一.生成器 1.生成器定义:在python中,一边 ...
- python语法生成器、迭代器、闭包、装饰器总结
1.生成器 生成器的创建方法: (1)通过列表生成式创建 可以通过将列表生成式的[]改成() eg: # 列表生成式 L = [ x*2 for x in range(5)] # L = [0, 2, ...
- python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解
一.生成器 1.什么是生成器? 在python中,一边循环一边计算的机制,称为生成器:generator. 2.生成器有什么优点? 1.节约内存.python在使用生成器时对延迟操作提供了支持.所谓延 ...
- python中生成器与迭代器
可迭代对象:一个实现了iter方法的对象是可迭代的 迭代器:一个实现了iter方法和next方法的对象就是迭代器 生成器都是Iterator对象,但list.dict.str虽然是Iterable(可 ...
- Python之生成器、迭代器
生成器 生成器类似返回值为数组的一个函数,这个函数可以接受参数,可被调用,但只能产生一个值,所以大大节省内存. 生成器表达式的语法非常简单,只需要将列表推导式的中括号改成小括号就可以了 [x+x fo ...
- Python中生成器和迭代器的功能介绍
生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...
- python的生成器和迭代器
三.推倒式从时间上比较:集合 字典 元祖 列表 (从小到大)占用内存比较:字典 集合 列表 元祖 (从大到小) 字典是可进行hash操作,操作的是字典的key ,而对list进行hash操作的时候操作 ...
- Python笔记(十)_迭代器与生成器
迭代 用for...in来遍历一个可迭代对象的过程就叫迭代 可迭代对象:列表.元组.字典.集合.字符串.生成器 可以使用内置函数isinstance()判断一个对象是否是可迭代对象 >>& ...
随机推荐
- mysql--日志文件
1 选择常规查询日志和慢查询日志输出目标 1.1 log_output查看.定义 所谓的输出目标就是日志写入到哪里,mysql中用系统变量 log_output来指定输出目标,log_output的 ...
- AMQP与RabbitMQ
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10922433.html 一:AMQP是什么 AMQP(Advanced Message Queuing Pr ...
- 【GPU加速系列】PyCUDA(一):上手简单操作
PyCUDA 可以通过 Python 访问 NVIDIA 的 CUDA 并行计算 API. 具体介绍和安装可以参考 PyCUDA 官网文档和 pycuda PyPI. 本文涵盖的内容有: 通过 PyC ...
- pip 安装包 使用国内镜像源
1.pipy国内镜像目前有: 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn ...
- KVM虚拟机嵌套虚拟化
KVM虚拟机嵌套虚拟化 背景介绍 在Arch linux的 KVM 虚拟机上启动来部署开源Iaas系统zstack时,需要开启虚拟机嵌套虚拟化. 解决 KVM 嵌套式虚拟 Nested 是一个 ...
- qhclass
http://www.qhclass.com/classroom/62/courses
- flask框架搭建项目的具体步骤
flask是一个使用python编写的轻量级Web应用框架.与django不同,Django创建工程时,会直接构架好工程目录.而flask工程几乎是自己创建结构. 1.导入相关模块以及需要使用的模块: ...
- 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT)
5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(配置MQTT的SSL证书,验证安全通信) 首先确定自己的固件打开了SSL,升级篇里面的固件我打开了SSL,如 ...
- Office Tool Plus 安装Office
Office Tool Plus 是一款集office 卸载安装管理,激活等多功能于一体的神器. 官网:https://otp.landian.vip/en-us/ 下载 安装 值得注意的是Retai ...
- selenium--高亮显示正在操作的元素
前戏 在进行web自动化的时候,如果我们想知道正在操作的元素,我们可以通过js的方式来实现 实战 from selenium import webdriver import unittest, tim ...