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 ...
随机推荐
- INTERVIEW #4
120min, 5题.本菜鸡怒跪. 1.变身程序员 (读取时可以按行读取,直到读到空行为止,再对读取过的所有行做转换处理) 输出描述:如果能将所有的产品经理变成程序员,输出最小的分钟数:如果不能将所有 ...
- Jaba_Web--JDBC 查询记录操作模板
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- 图论--网络流--费用流POJ 2195 Going Home
Description On a grid map there are n little men and n houses. In each unit time, every little man c ...
- 题目分享F 二代目
题意:T个点R种双向边,P种单向边,求点S到每个点的最短距离 分析:(这再看不出来是spfa就该**了) 首先,这题能否用spfa就看他是否有负环呗,显然,双向边的权值非负,单向边还有个啥政策,总之显 ...
- uniapp 踩坑
获取数据 可在 onLoad 生命周期中获取数据,接收一个参数 option 为上个页面传递的参数. 点击事件tap代替click 两者都会在点击时触发,但是在web手机端,clikc会有300ms延 ...
- async与await----js的异步处理
async与await----js的异步处理 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 之前写代码遇到一个问题,返回 ...
- Coursera课程笔记----计算导论与C语言基础----Week 12
期末编程测试(Week 12) Quiz1 判断闰年 #include <iostream> using namespace std; int main() { int year; cin ...
- leetcode_课程表(BFS、拓扑排序)
题目描述: 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 .在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹 ...
- java知识点查漏补缺-- 2020512
jvm: jdbc statement: JDBC statement中的PReparedStatement的占位符对应着即将与之对应当值,并且一个占位符只能对应一个值,如果能对应多个就会引起混淆.s ...
- Mysql 常用函数(7)- length 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html length 的作用 返回字符串的字节长度 注意: ...