标题: Python_白李娜_20210121 [打印本页] 作者: つ兜兜里没糖 时间: 2021-1-21 20:30 标题: Python_白李娜_20210121 一、整理笔记17:30-20:001.生成器
#实现生成器
t = (x*x for x in range(10))
print(t)
#使用next()方法,可以获取生成器中的下一个元素
print(next(t))
print(next(t))
print(next(t))
#如果生成器中的元素已经取完了,则抛出StopIteration异常
print(next(t))
print ('---------------------------------')
g = (x*x for x in range(10))
for i in g:
print(i)
'''
----利用函数实现生成器
'''
#利用生成器生成自然数序列
import time
def nature():
n = 1
while True:
#print (n)
yield n ''' return n :1.返回n的值 2.立即结束函数
yield n: 1.返回n的值 2.立即暂停函数的执行
'''
n += 1
#time.sleep(1)
g = nature()
for e in g:
print(e)
time.sleep(1)
print(next(g))
#map()函数 映射
#reduce()/filter()
#把一个列表映射成另一个列表
r = map(g,[1,2,3,4,5])
print (list(r))
'''
函数作为返回值
'''
def s(*args):
ss = 0
for arg in args:
ss += arg
return ss
print(s(1,2,3,4))
#lazy_s()定义了函数s(),而s()函数中又引用了外部函数lazy_s()的参数args
# 当lazy_s()函数返回函数s(),相关的餐参数和变量都已经保存到返回的函数中
#我们把这种程序结构称为闭包closure
def lazy_s(*args):
#定义函数
def s():
ss = 0
for arg in args:
ss += arg
return ss
return s
h = lazy_s(s(1,2,3,4))
print(h())
3.匿名函数lambda
def g(x):
return x*x
r = map(g,[1,2,3,4,5])
print(list(r))
r = map(lambda x:x*x*x,[1,2,3,4,5])
print(list(r))