王二学习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. git创建分支提交到远程分支步骤

    git创建分支提交到远程分支步骤 step1,在本地新建分支() git branch newbranch step2:把本地分支push到远程 git push origin newbranch s ...

  2. 如果SQL Server 配置管理器没有找到就代表安装失败?

    如果SQL Server 配置管理器没有找到就代表安装失败? 2017-05-09 17:58 124人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 首先,只要你 ...

  3. mstOne

    云鸟(2017年6月6日) 1.html标签语义化的好处 a:利于seo优化 b:在样式丢失的时候,还是可以比较好的呈现结构 c:更好的支持各种终端,例如无障碍阅读和有声小说等. d:利于团队开发和维 ...

  4. golang 报错illegal rune literal

    记录一下,今天运行一端代码遇到这个报错"illegal rune literal",代码如下: func main() { http.HandleFunc('/login', lo ...

  5. 【Java集合系列二】LinkedList解析

    一.简介 1.LinkedList继承关系 2.LinkedList底层实现 LinkedList使用双向链表存储数据,所以没有默认的容量,也不会有扩容一说.只有两个指针,永远指向链表的两端:firs ...

  6. STL next_permutation 算法原理和实现

    转载自:https://www.cnblogs.com/luruiyuan/p/5914909.html 目标 STL中的next_permutation 函数和 prev_permutation 两 ...

  7. THML

    结构<!DOCTYE html> <html> <head> <meta   charset="UTF-8> <titie>< ...

  8. C#修改json文件中的某些值

    using Newtonsoft.Json; JsonSerializer serialiser = new JsonSerializer(); string newContent = string. ...

  9. 【软件安装】nvidia驱动安装事宜

    https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html https://docs.nvidia.com/cuda/arch ...

  10. 算法笔记1 - 编辑距离及其动态规划算法(Java代码)

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/3808035.html 编辑距离概念描述 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个 ...