王二学习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. less的基本语法

    参考:http://old.zhufengpeixun.cn/qianduanjishuziliao/mobileDevelopment/2016-07-22/528.html

  2. 由通过seeion识别保存在cookie中的seeionID引发的CSRF问题

    上图是一个完整的CSRF攻击过程解释图 重点是第三句话 用户在没有登出的情况下,被攻击者获得了SESSIONID信息,伪造真用户登录 二.CSRF防御 通过 referer.token 或者 验证码 ...

  3. Vue入门笔记(一)--基础部分

    github地址:https://github.com/iTao9354/basicVue(demo01-28) 一.初识Vue 使用双大括号{{message}}将数据渲染进DOM中.      可 ...

  4. Spring Boot + Jpa + Thymeleaf 增删改查示例

    快速上手 配置文件 pom 包配置 pom 包里面添加 Jpa 和 Thymeleaf 的相关包引用 <dependency> <groupId>org.springframe ...

  5. 学习Linux系统中命令的简单方法

    如果说如何快速学习.了解Linux的话,我的答案是学命令.背命令!为何呢?对于一名新手来说,去学习Linux的思想.了解Linux的架构.明白Linux中“一切皆文件”概念虽然说是没有错,是对的.但是 ...

  6. LeetCode刷题 fIRST MISSING POSITIVE

    Given an unsorted integer array,find missing postive integer. For example , Given [1,2,0]return 3, a ...

  7. 表单验证,添加动态class

  8. Json转换工具

    import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterx ...

  9. 指导手册04:运行MapReduce

    指导手册04:运行MapReduce   Part 1:运行单个MapReduce任务 情景描述: 本次任务要求对HDFS目录中的数据文件/user/root/email_log.txt进行计算处理, ...

  10. Linux磁盘挂载

            mount命令 用于加载文件系统到指定的加载点.此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Lin ...