Python 学习笔记 15 内置函数1,2

一、 复习

# 迭代器和生成器
# 迭代器
# 可迭代协议---含有iter方法的都是可迭代的
# 迭代器协议---含有next和iter的都是迭代器
# 特点
# 节省内存空间
# 方便逐个取值,一个迭代器只能取一次
# 生成器 -----生成器
# 生成器函数
#含有yield关键字的函数都是生成器函数
# 生成器函数的物点
# 调用之后函数内的代码不执行,返回生成器
# 每从生成器中取一个值就会执行一段代码,遇到yield就停止
# 如何从生成器中取值
# for :如果没有break会一直取,直到取完
# next :每次只取一个
# send :不能用在第一个,取下一个值的时候会给上一个位置传一个新的值
# 数据类型强制转换 :会把所有的值一次性放到内存里
# 生成器表达式
# (条件成立想放在生成器中的值 i in 可迭代的 if 条件)
二、作业
# 1.处理文件,用户指定要查找的文件和内容,将文件中包含要查找的内容的每一行都输出到屏幕
def check_file(filename,content):
with open(filename,encoding='utf-8') as f:
for i in f:
if content.strip() in i:
yield i.strip()

g = check_file('1.复习.py','生成器')
for i in g:
print(i)

# 2.写生成器,从文件中读取内容,在每一次读取到的内容之前加上‘***’之后两后再返回给用户
def check_file(filename,content):
with open(filename,encoding='utf-8') as f:
for i in f:
yield '***'+i

g = check_file('1.复习.py','生成器')
for i in g:
print(i,end='')

三、面试题
"""
def demo():
for i in range(4):
yield i

g = demo()

g1 = (i for i in g)
g2 = (i for i in g1)
# g2 = (i for i in (i for i in g)) #生成器只能取一次给了g1就不能给g2

print(list(g1))
print(list(g2))
""""
"""
# def add(n,i):
# return n+i
#
# def test():
# for i in range(4):
# yield i
#
# g = test()
# for n in [1,10,5]:
# g = (add(n,i) for i in g)
#上面两行可以看成这样:
# n = 1
# g = (add(n,i) for i in test())
# n = 10
# g = (add(n,i) for i in g)
# g = (add(n,i) for i in (add(n,i) for i in test()))
# n = 5
# g = (add(n,i) for i in g)
# g = (add(n,i) for i in (add(n,i) for i in (add(n,i) for i in test())))
# g = (add(n,i) for i in (add(n,i) for i in (add(n,i) for i in (0,1,2,3))))
# g = (add(n,i) for i in (add(n,i) for i in (add(5,i) for i in (0,1,2,3))))
# g = (add(n,i) for i in (add(n,i) for i in (5,6,7,8)))
# g = (add(n,i) for i in (add(5,i) for i in (5,6,7,8)))
# g = (add(n,i) for i in (10,11,12,13))
# g = (add(5,i) for i in (10,11,12,13))
# g = (15,16,17,18)

# print(list(g))

"""

四、内置函数
https://www.processon.com/view/link/5d556d74e4b04399f5a6ab4b

posted @ 2019-08-15 20:10  休由  阅读(201)  评论(0编辑  收藏  举报