python的生成器和迭代器
三、推倒式
从时间上比较:集合 字典 元祖 列表 (从小到大)
占用内存比较:字典 集合 列表 元祖 (从大到小)
字典是可进行hash操作,操作的是字典的key ,而对list进行hash操作的时候操作的是
list的值
1、列表推导式
例子:list =[i for i in rang(1,200)]
解释:
列表推导式就是简写了的for循环,代码更加简洁,for循环每遍历一次就往list
里面添加一个数据
2、字典推导式
把下列字符串使用字典推导式生成一个字典
cook_str='BIDUPSID=D0727533D7147B7;PSTM=1530348042; ' \
'BAIDUID=B1005C9BC2EB28; sugstore=0;' \
'__cfduid=d0a13458f8ac2a;BD_UPN=12314353;' \
'ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402'
data = { item.split("=")[0]:item.split("=")[1] for item in cook_str.split(";")}
print(data)
3、生成器表达式
# 生成器表达式
# 生成器
# 生成器存储并不是具体的值,而是一个算法,通过next() 来进行取值
# 一次只能取一个,如果取完了再去取,就会抛出异常
# 一次只能取一个,如果取完了再去取,就会抛出异常
tu = (i for i in range(1,20)) # 生成器对象
print(next(tu)) # 取值
# 通过yield 指定生成器 生成器取值使用next() 函数
# next() 取值yield 一次取一个
def gen_fun():
yield 1
print("hhhh")
yield 100
res = gen_fun()
print(next(res))
四、迭代器和生成器
1、生成器
生成器并不会一下子把所有的数据全部导出来,生成器中保存的只是一个生成数据的
相关算法,并不会吧数据都生成出来,只是在我们需要数据的时候,用生成器去生成一条数据
就可以了
生成器比迭代器多了几种方法 send() close() throw()
生成器 < 迭代器 < 可迭代对象
2、迭代协议
3、迭代器
迭代器:在可迭代对象的基础上实现了 __iter__方法 还实现了 __next__方法
可迭代对象:可以进行for循环的就是一个可迭代对象 内部只实现了 __iter__方法
生成器也是迭代器的一种,都支持迭代操作 for循环
例子:
list = [1,2,3,4]
list1 = iter(list) # 使用iter()来转化成一个迭代器
print(next(list1)) # 使用next()方法取值
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基础の生成器、迭代器、序列化和虚拟环境的应用
本课主题 生成器介紹和操作实战 迭代器介紹和操作实战 序例化和反序例化 Json 和 Pickle 操作实战 字符串格式化的应用 创建虚拟环境实战 本周作业 生成器介紹和操作实战 什么是生成器,生成器 ...
- python的生成器与迭代器和可迭代对象
来简单的说下python中的生成器和可迭代对象以及迭代器的问题.只是简单地记录一下并不涉及太深入的内容. 首先来说一下什么是生成器,先看下面的代码: #_*_ coding:utf-8 _*_ res ...
随机推荐
- double运算的坑
某个结果运算后,得出的数据:a = 15.599999999 而不是15.6,导致条件判断 a < 15.6 为true,使程序出现bug 解决办法,对运算后的浮点数,进行格式化(以保留一位小数 ...
- Binary Index Tree
0 引言 Leetcode307 这道题给一个可变数组,求从\(i\)到\(j\)的元素之和. 一个naive的做法是,每次查询都从\(i\)累加到\(j\): class NumArray { pu ...
- [Docker]compose一键部署nginx
Docker-compose部署nginx 创建配置文件 mkdir -p /usr/local/docker/nginx cat > /usr/local/docker/nginx/docke ...
- 数学--数论--随机算法--Pollard Rho 大数分解算法(纯模板带输出)
ACM常用模板合集 #include <bits/stdc++.h> using namespace std; typedef long long ll; ll pr; ll pmod(l ...
- 图论--LCA--在线RMQ ST
板子测试POJ1330,一发入魂,作者是KuangBin神犇,感谢? #include <cstdio> #include <cstring> #include <al ...
- python(索引/切片)
一.索引 1.索引值从左到右-->从0开始,索引值从右到左-->从-1开始 取值格式var[index] >>> name = "xinfangshuo&quo ...
- 【摘抄】深入解析Windows操作系统
一.线程是一个进程内部的实体,也是Windows执行此进程时的调度实体.若没有线程,进程的程序将不可能运行.线程包含以下部件: 1.一组代表处理器状态的CPU寄存器中的内容. 2.两个栈:一个用于线程 ...
- 【网络基础】ARP地址解析协议
ARP(Address Rssolution Protocol) 地址解析协议 用于将IP地址解析为MAC地址. MAC地址是设备的物理地址,是被分配给每一个网络接口卡的全球唯一序号. 全球唯一:理论 ...
- 【BIM】BIMFACE中创建雾化效果
背景 在BIM运维场景初始化的时候,一般都是首先将整个运维对象呈现在用户面前,例如一座大厦.一座桥梁.一个园区等等,以便于用户进行总览,总体把握运维对象,如果这个宏大的场景边界过于清晰,与背景融合也不 ...
- D. Misha, Grisha and Underground 树链剖分
D. Misha, Grisha and Underground 这个题目算一个树链剖分的裸题,但是这个时间复杂度注意优化. 这个题目可以选择树剖+线段树,时间复杂度有点高,比较这个本身就有n*log ...