python_0基础开始_day12
第十二节
一,生成器
生成器的核心:生成器的本质就是迭代器
迭代器是python自带的
生成器是程序员自己写的一种迭代器
在python中有三种方式来创建生成器:
基于函数编写
推导式方式编写
python内置函数或者模块提供(其实1,3两种本质上差不多,都是通过函数的形式生成,只不过1是自己写的生成器函数,3是python提供的生成器函数而已)
# def func():# print("这是一个函数")# return "函数"# func()def func(): print("这是一个生成器") yield "生成器"# 坑func() # 生成一个生成器print(func().__next__()) # 启动生成器print(func().__next__())
yield与return:
相同点:
都是返回内容
都可以返回多次(但是return写多个只会执行一个)
不同点:
return是终止函数,yield是暂停生成器
yield能够记录当前执行位置
一个yield对应一个next
def func(): msg = input("请输入内容") yield msg print("这是第二次启动") yield "生成器2" yield "生成器3" yield "生成器4"g = func()print(next(g))print(next(g))print(next(g))print(next(g))
可迭代对象,迭代器,生成器的区别:
可迭代对象:
优点:list,tuple,str 节省时间,取值方便,使用灵活(具有自己的方法)
缺点:大量消耗内存
迭代器:
优点:节省空间
缺点:不能直接查看值,使用不灵活,消耗时间,一次性,不可逆行
生成器:
优点:节省空间,人为定义
缺点:不能直接查看值,消耗时间,一次性,不可逆行
# 数据类型 #(pyhton3: range() | python2 :xrange()) 都是可迭代对象 __iter__()# 文件句柄是迭代器 __iter__() __next__()# 没有send方法就是一个迭代器,具有send方法的就是一个生成器
使用场景
当文件或容器中数据量较大时,建议使用生成器。
区别什么是迭代器,什么是生成器
迭代器的地址 :iterator
生成器的地址 :generator
yield 将可迭代对象一次性返回
yield from 将可迭代对象逐个返回
def func(): lst = [1,2,3,45,6] lst1 = ["alex","wusir","taibi","baoyuan"] yield from lst yield from lst1g = func()
二,推导式
普通循环
print([i for i in range(10)]) # list# print([变量 for循环])print({i for i in range(10)}) # set# print({变量 for循环})print({i: i+1 for i in range(10)}) # dict# print({键:值 for循环})
筛选模式
print([i for i in range(10) if i > 2]) # list# print([加工后的变量 for循环 加工条件])print({i for i in range(10) if i % 2 == 1}) # set# print({加工后的变量 for循环 加工条件})print({i: i+1 for i in range(10) if i % 2 == 0}) # dict# print({加工后的键:值 for循环 加工条件})
没有元组推导式。
生成器推导式
普通模式
tu = (i for i in range(10)) print((变量 for循环))
筛选模式
tu = (i for i in range(10) if i > 5)print((加工后的变量 for循环 加工条件))
三,内置函数Ⅰ
了解即可
type():运算字符串中的算数
eval():运行字符串中的代码
hash():区分可变和不可变数据类型
help():查看帮助信息
callable():查看对象是否可调用
float():查看浮点数
complex():复数
bin():十进制转二进制
oct():十进制转八进制
hex():十进制转十六进制
divmod(除数,被除数):(商,余)
round(小数,保留位数):保留小数位
pow():两个参数求幂
pow(2,2,3):两个参数求幂后的余
bytes(str,encoding="utf-8"):将字符串进行编码
ord():通过元素获取当前表位的序号
chr():通过表位序号查找元素
repr():查看数据的原生态
all():判断容器中的元素是否都为真
any():判断容器中的元素是否有一个为真
locals():查看当前空间变量
globals():查看全局空间变量
format():
python_0基础开始_day12的更多相关文章
- python_0基础学习_day02
第二节 一,while while也称为无限循环.死循环 while 条件: 缩进 循环体 应用领域:音乐播放:单曲循环,列表循环,随机播放(也是有规律的) 登陆界面:…… 数学计算:1~100的和, ...
- python_0基础学习_day01
Python是一门动态解释型的强类型定义语言 一.变量 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止使用python的关键字(在pycharm中关键字明明变 ...
- python_0基础开始_day07
第七节 1,基础数据类型补充 str: print(str.capitalize()) —— 首字母大写 print(str.title()) —— 每个单词的首字母大写 print(str.swap ...
- python_0基础开始_day06
第六节 1.小数据池 ==,is,id ==:查看等号两边的值是否一样 a = 9b = 9print(a == b) # 返回Truec = "dog"d = "dog ...
- python_0基础开始_day03
第三节 一.整形和布尔值的转换 int整型 python3: 全部都是整型 python2: 整型,长整型long 十进制转换二进制 # 将十进制的168转换为二进制 #得出结果 将十进制的168转 ...
- python_0基础开始_day05
第五节 一.字典 python的数据结构之一 字典 —— dict 定义:dic = {"key":"dajjlad"} 作用:存储数据,大量,将数据和数据起到 ...
- python_0基础开始_day04
第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...
- python_0基础开始_day13
第十三节 一,匿名函数 匿名函数 == 一行函数 lambda == def == 关键字 函数体中存放的是代码 生成器体中存放的也是代码 就是yield导致函数和生成器的结果不统一 lambda x ...
- python_0基础开始_day11
第十一节 一,函数名的第一类对象 函数名当作值,赋值给变量 print(函数名) 查看看书的内存地址 函数名可以当作容器中的元素 lis = []dic = {}def func(): prin ...
随机推荐
- 教程:myeclipse在线安装svn插件
SVN 版本控制,相信开发过程中都很多有用到,今天在myeclipse 在线安装了SVN插件.下面是具体步骤,记录下,希望对有需要的朋友提供帮助. 要求: Myeclispe,电脑能连接互联网 步骤: ...
- 10.矩形覆盖 Java
题目描述 我们可以用2**1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法? 思路 其实,倒数第一列要么就是1个2**1的矩形竖着放,要么就 ...
- C++入门经典-例8.7-多态,利用虚函数实现动态绑定
1:多态性是面向对象程序设计的一个重要特征,利用多态性可以设计和实现一个易于扩展的系统.在C++语言中,多态是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数,发出同样 ...
- EBS 修改系统名称
修改EBS登录系统的左上角名称 方法: 修改 配置文件: 地点名称 ,在地点层输入相应的名称即可
- 代码实现集合嵌套之ArrayList嵌套ArrayList
package com.loaderman.list; import java.util.ArrayList; import com.loaderman.bean.Person; public cla ...
- vue路由懒加载,babel-loader无法处理/使用 import
使用vue-router懒加载,代码如下: 但是npm run dev 的时候 babel-loader报错如下: 查阅各种资料终于解决. 问题原因: 这种情况下的 import 属于异步引用组件,需 ...
- C++ 学习笔记整理
目录 STL 容器 set的用法简介 unordered_set 变量类型转换 stringstream 类型转换 数据结构 哈希表 日常小技巧 C++输入输出流加速器,关闭同步流,ios::sync ...
- RESTful 介绍
什么是RESTful?一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务端交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. ...
- localStorage基本了解及使用
以下内容来自: https://www.cnblogs.com/st-leslie/p/5617130.html 感谢大佬的分享 一.什么是localStorage.sessionStorage 在 ...
- 【Linux】【二】linux 压缩文件(txt)、查看压缩文件内容、解压缩文件、
通过Xshell 压缩文件.解压缩文件 gzip tools.txt 压缩[tools.txt]文件 zcat tools.txt.gz 查看压缩文件[tools.txt.gz]内容 gunzip ...