python学习之老男孩python全栈第九期_第二周学习总结
迭代器
双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的
1. 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir(数据) )
可迭代的一定可以被for循环
2. 迭代器协议:含有__iter__、__next__的方法
迭代器一定可迭代,可迭代的通过调用iter()方法就能得到一个迭代器
迭代器的特点:
很方便使用,且只能取所有的数据取一次
节省内存空间
for 循环其实就是在使用迭代器 判断是不是迭代器,其实是为了使用for循环
当我们遇到一个新的变量,不确定能不能for循环时,就判断它是否可迭代
生成器
生成器的表现形式
1. 生成器函数
2. 生成器表达式
生成器函数:
含有yield关键字的函数就是生成器函数
特点:
调用函数之后函数不执行,返回一个生成器
调用next方法的时候会取到一个值
直到取完最后一个,再执行next会报错
从生成器中取值的几个方法
1. next
2. for
3. 数据类型的强制转换:占用内存 关于send()
其实next()和send()在一定意义上作用是相似的
区别是send()可以传递yield表达式的值进去,而next()不能传递特定的值,只能传递None进去
因此,我们可以看做c.next() 和 c.send(None) 作用是一样的
需要提醒的是,第一次调用时,请使用next()语句或是send(None),不能使用send发送一个非None的值,否则会出错
最后一个yield不能接受外部的值 生成器的表达式和列表推导式以及其他推导式 1. 生成器表达式:
g = (i for i in range(10)) # g是一个生成器
for i in g:
print(i) 2. 列表推导式
[每一个元素或是和元素相关的操作 for 元素 in 可迭代数据类型] # 遍历之后挨个处理
[满足条件才进行操作的元素 for 元素 in 可迭代数据类型 if 元素相关的条件 ] # 筛选功能
egg_list = ['鸡蛋%s'%i for i in range(10)] # 列表推导式
print(egg_list) 3. 字典推导式
将一个字典的key和value对调
mcase = {'a': 10, 'b': 34}
dic = {mcase[k]:k for k in mcase}
print(dic)
4. 集合推导式
计算列表中每个值的平方,自带去重功能
squared = {x*x for x in [1, -1, 2]}
print(squared)
没有元组推导式
内置函数
在此仅列出几个重要的内置函数:
其他:input,print,type,hash,open,import,dir
str类型代码执行:eval,exec
数字:bool,int,float,abs,divmod,min,max,sum,round,pow
序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,bytes,repr
序列:reversed,slice
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,zip,filter,map
匿名函数
为了解决那些功能很简单的需求而设计的一句话函数
函数名 = lambda 参数 :返回值
匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值 返回值和正常的函数一样可以是任意数据类型
看到匿名函数,就要想到肯定会带着考内置函数,而和匿名函数相关的内置函数只有5个:min max filter map sorted
例题:现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] 没用匿名函数:
tu1 =(('a'),('b'))
tu2 =(('c'),('d'))
res = zip(tu1,tu2)
def func(tup):
return {tup[0]:tup[1]}
ret = map(func,res)
# for i in ret:
# print(i)
list(ret)
用匿名函数:
tu1 =(('a'),('b'))
tu2 =(('c'),('d'))
res = zip(tu1,tu2)
# def func(tup):
# return {tup[0]:tup[1]}
ret = map(lambda tup:{tup[0]:tup[1]},res)
# for i in ret:
# print(i)
print(list(ret))
简化后一行:
print(list(map(lambda tup:{tup[0]:tup[1]},zip((('a'),('b')),(('c'),('d'))))))
python学习之老男孩python全栈第九期_第二周学习总结的更多相关文章
- python学习之老男孩python全栈第九期_第一次周末考试题(over)第三次添加完毕
day 6python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合 ...
- python学习之老男孩python全栈第九期_数据库day005知识点总结 —— MySQL数据库day5
三. MySQL视图(不常用) 给某个查询语句设置个别名(视图名),日后方便使用 - 创建: create view 视图名 as SQL; PS:视图是虚拟的 - 修改: alter view 视图 ...
- python学习之老男孩python全栈第九期_数据库day004知识点总结 —— MySQL数据库day4
复习: 1. MySQL:文件管理的软件 2. 三部分: - 服务端 - SQL语句 - 客户端 3. 客户端: - MySQL - navicat 4. 授权操作: - 用户操作 - 授权操作 5. ...
- python学习之老男孩python全栈第九期_数据库day002知识点总结 —— MySQL数据库day2(全部)
一. 复习1. MySQL: - 服务端 - 客户端2. 通信交流 - 授权 - SQL语句 - 数据库 创建数据库: create database db1 default charset utf8 ...
- python学习之老男孩python全栈第九期_数据库day002 -- 作业 (数据库为day001创建的数据库)
1.自行创建测试数据 对score表进行优化: 添加数据: 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 为了方便做题,额外增加几条数据 查询: 3.查询平均成绩大于60分的同学的学号和 ...
- python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建
一. 学习SQL语句规则以及外键 1. 操作文件夹 create database db2; 创建文件夹 create database db2 default charset utf8; 创建文件夹 ...
- python学习之老男孩python全栈第九期_数据库day004 -- 作业
https://www.cnblogs.com/YD2018/p/9451809.html 11. 查询学过“001”并且也学过编号“002”课程的同学的学号.姓名 select student.si ...
- python学习之老男孩python全栈第九期_数据库day003知识点总结 —— MySQL数据库day3
复习: 1. 增 insert into xx(name) values('root'),('xxx'); insert into xx(name) select id from tb1; 2. 自增 ...
- python学习之老男孩python全栈第九期_数据库day003 -- 作业
数据库: class: course: student: teacher: score: /* Navicat Premium Data Transfer Source Server : local ...
随机推荐
- hdu5833----高斯消元
题目大意: 给你n个整数,从中选一些数,他们的乘积为一个完全平方数 问有多少种这样的方式,已知这些数的素因素不超过2000. 思路: 一个完全平方数素因素的个数肯定是偶数个. 我们只要从n个数中选取所 ...
- centos6安装最新syslog-ng推送hdfs
可参考以下网址: installhttps://www.syslog-ng.com/community/b/blog/posts/latest-syslog-ng-available-rhel-6-c ...
- angular.js的依赖注入解析
本教程使用AngularJS版本:1.5.3 angularjs GitHub: https://github.com/angular/angular.js/ Angula ...
- iOS开发总结--三方平台开发之分享
1.前言 在公司参与了多个应用三方平台的开发,涉及微信.微博.QQ.Facebook.meetup等,总结一下一般的接入三方平台SDK方法. 2.接入三方SDK 任何应用要接入三方平台,都需要在该平台 ...
- cobbler 自定义私有yum源
目的:为客户端自动添加上yum源 以下以openstack源为例 1.新建私有yum源[root@localhost ~]#cobbler repo add --name=openstack-mita ...
- iOS开发证书与配置文件的使用
前提 众所周知,开发iOS应用必须要有iOS证书(Certificates)和配置文件(Provisioning Profiles),那么问题来了: 1.什么是iOS证书,它是如何与app应用关联的? ...
- AngularJS自定义Directive
(编辑完这篇之后,发现本篇内容应该属于AngularJS的进阶,内容有点多,有几个例子偷懒直接用了官方的Demo稍加了一些注释,敬请见谅). 前面一篇介绍了各种常用的AngularJS内建的Direc ...
- js05
继续学习js,在这里我们主要讲述一下js的BOM(浏览器对象模型)以及一些js库和应用这些js库的方法. 1.浏览器对象模型(BOM): window对象: 表示浏览器窗口,所有的 ...
- tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了
tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了 感觉它能找到词与词之间的关系,应该可以用来做推荐系统.自动摘要.相关搜索.联想什么的 tensorflow1.1.0 ...
- NiftyDialogEffects-多种弹出效果的对话框
感觉系统自带的对话框弹出太生硬?那就试试NiftyDialogEffects吧,类似于(Nifty Modal Window Effects),效果是模仿里面实现的 ScreenShot . . ...