王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594

复习

1.迭代器
1.双下方法:不常直接调用,是通过其他语法触发的
2.可迭代的:可迭代协议——含有__iter__() print('__iter__' in dir.(数据))
可以被for循环
3.迭代器协议:含有__iter__()和__next__()
可迭代
可迭代的通过__iter__()可以得到一个迭代器
4.迭代器特点:方便使用;所有数据只能取一次;节省内存
2.生成器
1.本质:是一种迭代器
2.表现形式: 生成器函数
生成器表达式
3.生成器函数: 含有yield 的函数
调用时,不执行,返回一个生成器
4.调用生成器中数据的方法:1.next 2.for 3.强制转换数据类型

学习内容

1.send ——第一次取值和最后一个yield不能用send
2.生成器表达式
3.各种推导式
遍历操作
筛选操作

代码区

1.生成器

def wahaha():
for i in range(200):
yield '娃哈哈%s'%i g = wahaha()
for i in g:
print(i)
def generator():
print('')
yield 1
print('')
yield
g = generator()
ret = g.__next__()
print('***',ret)
ret = g.__next__()
print('***',ret)

2.移位平均数,即每接受一个数,都重新计算平均数

# 1号
'''
def average():
sum = 0
count = 0
avg = 0
while 1:
num = yield
sum += num
count += 1
avg = sum/count
yield avg
avg_g = average()
avg_g.__next__()
avg1 = avg_g.send(10)
print(avg1)
avg_g.__next__()
avg1 = avg_g.send(20)
print(avg1)
'''
# 2号
'''
def average():
sum = 0
count = 0
avg = 0
num = 0
while 1:
num = yield avg
sum += num
count += 1
avg = sum/count avg_g = average()
avg_g.__next__()
avg1 = avg_g.send(10)
print(avg1)
avg1 = avg_g.send(20)
print(avg1)
'''
# 3号
'''
def initial(f):
def inner(*args, **kwargs):
ret = f(*args, **kwargs)
ret.__next__()
return ret
return inner
@initial
def average():
sum = 0
count = 0
avg = 0
num = 0
while 1:
num = yield avg
sum += num
count += 1
avg = sum/count
avg_g = average()
avg1 = avg_g.send(10)
print(avg1)
avg1 = avg_g.send(20)
print(avg1)

3.生成器表达式

li = ['鸡蛋%s'%i for i in range(10)]  # 列表推导式
print(li) g = (i for i in range(10))
print(g)

4.yield from 用法

def gen1():
for c in 'AB':
yield c
for i in range(3):
yield i print(list(gen1())) def gen2():
yield from 'AB'
yield from range(3) print(list(gen2()))

5.各种推导式

# 30以内能被3整除的数 列表推导式
'''
g = (i for i in range(30) if i % 3 == 0)
for i in g:
print(i)
print([i for i in range(30) if i % 3 == 0])
'''
# 嵌套列表中 名字含有两个e的名字,,,str.count
'''
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
li = [name for i in names for name in i if name.count('e') == 2]
print(li)
'''
# 字典推导式 1.对调key 和 value
'''
mcase = {'a': 10, 'b': 34}
mcase_frequency = {mcase[k]: k for k in mcase.keys()}
print(mcase_frequency)
'''
# 2.合并大小写对应的value值,将k统一成小写
'''
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_1 = {i.lower() : mcase.get(i.upper(),0)+ mcase.get(i.lower(),0) for i in mcase}
print(mcase_1)
'''
# 集合推导式
'''
squared = {x**2 for x in [1, -1, 2]}
print(squared)
'''

6.练习

# 例1:  过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
li = ['asd', 'asdd', 'qwe23','a','as','asd']
li1 = [i.upper() for i in li if len(i)>= 3]
print(li1)
# 例2: 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
li = [(x,y) for x in range(0,6,2) for y in range(1,6,2)]
print(li)
# 例3: 求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]
M = [[1,2,3],[4,5,6],[7,8,9]]
li = [row[2] for row in M]
print(li)

python之路——14的更多相关文章

  1. 【python之路14】发送邮件实例

    1.发邮件的代码 from email.mime.text import MIMEText from email.utils import formataddr import smtplib msg ...

  2. Python之路【第十九篇】:爬虫

    Python之路[第十九篇]:爬虫   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...

  3. Python之路【第十八篇】:Web框架们

    Python之路[第十八篇]:Web框架们   Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...

  4. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  5. Python之路【第十六篇】:Django【基础篇】

    Python之路[第十六篇]:Django[基础篇]   Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...

  6. Python之路【第十五篇】:Web框架

    Python之路[第十五篇]:Web框架   Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...

  7. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  8. Python之路【第八篇】:堡垒机实例以及数据库操作

    Python之路[第八篇]:堡垒机实例以及数据库操作   堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient ...

  9. Python之路【第七篇】:线程、进程和协程

    Python之路[第七篇]:线程.进程和协程   Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

随机推荐

  1. 在Visual Studio 2017中安装bower

    在项目目录下添加一个文件.bowerrc { "directory": "wwwroot/lib" } JS包默认安装到webroot的lib文件夹,可以通过. ...

  2. Quartz的基本使用之入门(2.3.0版本)

    一.Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自 ...

  3. vs2013打包安装程序

    安装扩展包Visual Studio Installer VS2013下默认是没有Visual Studio Installer的,需要安装对应的扩展包: 下载地址:VS2013安装向导扩展包下载 安 ...

  4. python全栈开发笔记---------数据类型****整理****

    一.数字 int(..) 二.字符串 replace/find/join/strip/startswith/split/upper/lower/format tempalet ='i am {name ...

  5. shell中下载最新版本或指定版本的办法(Dockerfile 中通用)

    VER=$(curl -s https://api.github.com/repos/v2ray/v2ray-core/releases/latest | grep tag_name | cut -d ...

  6. oracle项目案例脚本

    前言:这是我从其他地方找到的一个oracle的案例脚本,在自己使用数据库的时候方便使用. -- 01 创建表空间 -- 注意表空间的路径 根据实际安装环境进行调整 CREATE TABLESPACE ...

  7. Caffe 根据log信息画出loss,accuracy曲线

    在执行训练的过程中,若指定了生成log信息,log信息包含初始化,网络结构初始化和训练过程随着迭代数的loss信息. 注意生成的log文件可能没有.log后缀,那么自己加上.log后缀.如我的log信 ...

  8. [Tensorflow实战Google深度学习框架]笔记4

    本系列为Tensorflow实战Google深度学习框架知识笔记,仅为博主看书过程中觉得较为重要的知识点,简单摘要下来,内容较为零散,请见谅. 2017-11-06 [第五章] MNIST数字识别问题 ...

  9. JavaScript原型与闭包相关

    1什么是对象 js中的值分为引用值和原始值 原始值:undefined  null  Boolean  string  number  原始值无法更改 存放在栈中 引用值:Array  Object  ...

  10. TensorFlow中assign函数

    tf.assign assign ( ref , value , validate_shape = None , use_locking = None , name = None ) 定义在:tens ...