python-生成器、推导式、内置函数1

生成器

  • 生成器的本质就是一个迭代器

  • 生成器和迭代器的区别:

    • 迭代器python自带

    • 生成器程序员自己写的

  • 生成器和迭代器通过send和内存地址进行区分

  • 文件句柄是一个迭代器 具有__iter__ 和 __next__两种方法

  • 生成器的编写方式:
    • 基于函数编写
    • 推导式方式编写
    • # 基于函数编写
      def
      func(): print("func") yield func # 函数体中出现yield代表要声明一个生成器 g = func() # 生成一个生成器 print(g) # 获取到的是一个生成器的内存地址 ret = g.__next__() # 启动生成器 print(ret) print(next(g))

可迭代对象

优点:list,tuple,str节省时间,取值方便,使用灵活(具有自己私有方法)

缺点:大量消耗内存

迭代器

优点:节省空间

缺点:不能直接查看值,使用不灵活,消耗时间,一次性,不可逆行

生成器

优点:节省空间,人为定义

扫描二维码关注公众号,回复: 9013322 查看本文章

缺点:不能直接查看,消耗时间,一次性,不可逆行

生成器的应用场景:当数据量较大时,推荐使用生成器

yield 和 return的区别

相同点:

  • 都具有返回内容

  • 都可以返回多个,但是return写多个只会执行一个

不同点:

  • return 终止循环 yield是暂停生成器

  • yield能够记录当前执行位置

  • 一个yield对应一个next

yield 和 yield form 的区别

  • yield form 将可迭代对象中的元素逐个返回

  • yield 一次性返回

推导式

普通循环和筛选

  • 列表

普通循环
print([i for i in range(10)])
print([变量 for循环])

筛选模式
print([i for i in range(10) if i % 2 ==0])
print([i for i in range(10) if i > 2])
[加工后的变量 for循环 加工条件]

 

  • 字典

普通循环
print({i: i+1 for i in range(10)})
{键:for循环}

筛选模式
print({i: i+1 for i in range(10) if i % 2 == 0})
{加工后的键:for循环 加工条件}

 

  • 集合

普通循环
print({i for i in range(10)})
{变量 for循环}

筛选模式
print({i for i in range(10) if i % 2 == 1})
{加工后的变量 for循环 加工条件}

 

  • 生成器

普通模式
tu = (i for i in range(10))
变量 for循环)

筛选模式
tu = (i for i in range(10) if i > 5)
(加工后的变量 for循环 加工条件)
for i in tu:
   print(i)

 

内置函数

"""
all() any() bytes() callable() chr() complex() divmod() eval()
exec() frozenset() globals() hash() help() id() input()
int() iter() locals() next() oct() ord() pow() repr() round()
"""

 

猜你喜欢

转载自www.cnblogs.com/womenzt/p/12283591.html