博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python列表生成式和生成器
阅读量:4971 次
发布时间:2019-06-12

本文共 1160 字,大约阅读时间需要 3 分钟。

【1】列表生成器:列表生成式就是一个用来生成列表的特定语法形式的表达式。

1.基础语句结构:[exp for iter_var in iterable例如:a=[f(x) for x in range(10)]

2.工作过程:

迭代iterable中的每个元素;每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值;最后把所有通过exp得到的计算值以一个新列表的形式返回。

相当于这样的过程:L = [] for iter_var in iterable:

L.append(exp)

详情介绍:https://www.cnblogs.com/yyds/p/6281453.html

【3】生成器:

1.作用:按照某种算法不断生成新的数据,直到满足某一个指定的条件结束。

构造生成器的两种方式:

  • 使用类似列表生成式的方式生成 (2*n + 1 for n in range(3, 11))
  • 使用包含yield的函数来生成

生成器的执行过程:

在执行过程中,遇到yield关键字就会中断执行,下次调用则继续从上次中断的位置继续执行。

生成器的特性:

  • 只有在调用时才会生成相应的数据
  • 只记录当前的位置
  • 只能next,不能prev

生成器的调用

要调用生成器产生新的元素,有两种方式:

  • 调用内置的next()方法
  • 使用循环对生成器对象进行遍历(推荐)
  • 调用生成器对象的send()方法
# print(list(range(10)))# s=(x*2 for x in range(10))# print(s)#
at 0x000001EBD2E2CFC0>生成器对象# for i in s:## #print(s.__next__())# print(next(s),i)#等价于s.__next__()取下一个元素# print(next(s))# print(next(s))#生成器就是一个可迭代对象(Iterable)#生成器一共两种创建方式#1(x*2 for x in range(5))#2.yieIddef foo(): print('ok') yield 1 print('ok2') yield 2g=foo()# print(g)# for i in foo():# print(i)# next(g)# next(g)#什么是可迭代对象(是否有_iter_)l=[1,2,3]l.__iter__()def fid(max): n,before,after=0,0,1 while n

 

转载于:https://www.cnblogs.com/lanyinhao/p/9131785.html

你可能感兴趣的文章
Linux下redis搭建与配置
查看>>
宽度过小,左右浮动元素会下沉的解决方案
查看>>
HDU 2076 夹角有多大
查看>>
跳台阶
查看>>
美好的十年工程师生涯(转载)
查看>>
二进制
查看>>
洛谷 P2709 BZOJ 3781 小B的询问
查看>>
江城子--除夕夜难寐郁书托思
查看>>
win7下命令框安装memchached,报错:failed to install service or service already installed解决办法...
查看>>
SDK
查看>>
jQuery常用方法(六)-jQuery 工具
查看>>
Charles抓包方法
查看>>
TensorFlow(五):手写数字识别加强版
查看>>
深入理解Spring Redis的使用 (六)、用Spring Aop 实现注解Dao层的自动Spring Redis缓存...
查看>>
Linux系统监控命令详解
查看>>
用angularjs遇到的坑们
查看>>
sicily 1146. 采药
查看>>
bootstrap学习12-响应式嵌入组件
查看>>
256位AES加密和解密
查看>>
PHP配置文件详解php.ini
查看>>