一、迭代器

迭代器是迭代取值的工具,迭代是一个重复的过程,每一次重复都是基于上一次的结果而来的.

为什么要用迭代器呢?

  1.可以不依赖索引取值

  2.同一时刻在内存中只有一个值,不会过多的占用内存

如何用迭代器?

  可迭代的对象:但凡内置有__iter__方法的对象都是可迭代的对象,列如str,list,dict,tuple,set,文件对象

  迭代器对象:即内置有__iter__方法又内置有__next__方法的对象称之为迭代器对象,如文件对象

可迭代对象.__iter__()-------->迭代器对象

迭代器对象.__tier__()-------->迭代器本身

迭代器对象.__next__()--------->迭代器的下一个值

总结迭代器:

  优点:1.可以不依赖索引取值

        2.同一时刻在内存中只有一个值,不会过多的占用内存

  缺点:

     1.不如按照索引取值或者key取值的方式灵活

     2.无法预测迭代器所包含值的长度

二、生成器

生成器本质上就是一种自定义的迭代器

函数内包含yield关键字,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是生成器对象

def func():print('first')yield 1print('second')yield 2print('third')yield 3print('fourth')g=func()
print(g)  #生成器对象

res1=next(g) #会触发函数的执行,直到碰到一个yield停下来,并且将yield后的值当作本次next的结果返回
print(res1)# 返回值1

自定义生成一个和内置函数range功能一样的生成器:

def my_range(start,stop,step=1):while start < stop: # 3 < 3yield startstart+=step #start=3

obj=my_range(1,5,2) # 1 3  把函数赋值给一个变量名,这个变量名就是生成器,迭代器print(next(obj))
print(next(obj))

了解知识点:yield的表达式形式的应用:x=yield

# def dog(name):
#     print('狗哥 %s 准备开吃' %name)
#     food_list=[]
#     while True:
#         food=yield food_list #  food=yield='肉包子'
#         print('%s 吃了 %s' %(name,food))
#         food_list.append(food)# g=dog('alex')# 强调:针对表达式形式的yield的使用,第一步必须让函数先暂停到一个yield的位置,才能进行传值操作
# next(g) # 张开狗嘴,让生成器先暂停到yield的位置,准备接收外部传进来的值
# res1=next(g) #g.send(None)
# print(res1)# res2=g.send('屎包子') # 1. 先为当前暂停位置的yield赋值 2. next(生成器)直到再次碰到一个yield停下来,然后其的值当做本次next的结果
# print(res2)# res3=g.send('肉包子')
# print(res3)# res4=g.send('泔水')
# print(res4)

总结yield:只能在函数内使用

1.yield提供了一种自定义迭代器的解决方案

2.yield可以保存函数的暂停的状态

3.yield对比return

  1.相同点:都可以返回值,返回的类型与个数都没有限制

  2.不同点:yield可以返回多次值,而return只能返回一次函数就结束了

生成器表达式:

# g = (i**2 for i in range(1,6) if i>3)  和列表表达式的区别就是"()"

三、内置函数(简单内置函数,前面接触过的就不介绍了)

all():如果里面的对象是真的就返回真,如果为空也返回真

print(all([1,'',None]))#False
print(all([1,2,'aaa']))#True
print(all([]))#True
print(all(''))#True

any():有一个为真就返回真,为空时返回假

print(any([0,'',None,False,1]))#True
print(any([0,'',None,False]))#False
print(any([]))#False

callable:判断函数是否可调用

Return whether the object is callable

ASCII码与数字转换:

print(chr(65))#A
print(chr(90))#Zprint(ord('a'))#97
print(ord('z'))#122

divmod(x,y):分页

Return the tuple (x//y, x%y)print(divmod(3003,20))#(150, 3)

eval:动态地执行一个表达式的字符串,或者compile函数编译出来的对象

print(eval('1+2+3+4'))
res=eval('[1,2,3]')
print(res,type(res))

frozenset()返回一个冻结的集合,集合冻结后不能再添加删除任何元素

pow()pow(2,3,3) #(2**3)%3

reversed():反转列表

l=[1,'a','3',3]
l1=reversed(l)
print(list(l1))

round():取近似数

print(round(3.5))#4
print(round(3.3))#3

slice():保存一个切片

l=['a','b','c','d','e']
s='helloworld'
obj=slice(1,5,2)# print(l[1:5:2])
print(l[obj])#['b', 'd']

zip():拉链函数

l=[1,2,3,4,5,6,7]
s='hello'res=zip(l,s)
print(list(res))#[(1, 'h'), (2, 'e'), (3, 'l'), (4, 'l'), (5, 'o')]

filter():函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

def is_odd(x):return x % 2 == 1
filter(is_odd, [1, 4, 6, 7, 9, 12, 17])#[1, 7, 9, 17]

删除 None 或者空字符串:

def is_not_empty(s):return s and len(s.strip()) > 0
filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])
#['test', 'str', 'END']

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

 L = [1,2,3,4,]
def pow2(x):
... return x*x
...
map(pow2,L)
#[1, 4, 9, 16]

sorted()对list、dict进行排序

l=[1,4,3,4,9,6,2]
l1 = sorted(l)
print(l1)#[1, 2, 3, 4, 4, 6, 9]

四、面向过程编程

核心是过程二字,过程指的就是解决问题的步骤,即先干什么后干什么,基于该思想编写程序就好比在设计一条流水线,是一种机械化的思维方式

优点: 复杂的问题流程化,进而简单化

缺点:可扩展性差

焚膏油以继晷,恒兀兀以穷年。

python-迭代器、生成器、内置函数及面向过程编程相关推荐

  1. python自动化_day4_迭代器生成器内置函数和匿名函数

    什么是可迭代的 含有__iter__方法的就是可迭代的: python 可迭代对象--Iterable Python中经常使用for来对某个对象进行遍历,此时被遍历的这个对象就是可迭代对象, 像常见的 ...

  2. python基础二 函数 递归 装饰器 迭代器 生成器 内置函数 二分法应用

    函数 迭代器 生成器 拆包和装包 tup=("j1","a1","c1","k1") a,b,c,d=tup print ...

  3. day4 匿名函数、装饰器、生成器、迭代器、内置函数、 json 与 pickle 模块

    文章目录 1.列表生成式 2.匿名函数 3.装饰器 4.生成器 5.迭代器 6.内置函数 7.json & pickle 序列化与反序列化 1.列表生成式 可通过特定语句便捷生成列表 list ...

  4. python 3 常用内置函数

    一.简介 如其他计算机语言一般, python 也有自己的内置函数,本文会一一实现python的所有内置函数,并注明一些需注意的地方 二.内置函数一览 三.实现 目录 (1)dir() (2)help ...

  5. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  6. Python学习(14)--内置函数

    Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...

  7. 初学者python笔记(内置函数_2)

    这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...

  8. Python两个内置函数——locals 和globals

    python作用域 http://tgstdj.blog.163.com/blog/static/748200402012419114428813/ 有两种类型的作用域--类的变量和对象的变量. 类的 ...

  9. python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象

    文章目录 locals 和globals(名字空间)简介 1.局部变量函数locals例子(locals 返回一个名字/值对的字典) 批量创建对象 示例1 示例2 函数内 类内 2.全局变量函数glo ...

最新文章

  1. (转自PHPer)成长的选择
  2. 中兴ZXR10交换机配置手册
  3. java中hashMap的排序
  4. 计算机学院开展活动,团学会 | 以梦为马,不负韶华 计算机学院开展“逐梦100”活动(一)...
  5. stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗
  6. solr安装笔记与定时器任务
  7. Eclipse安装SVN插件方式简明介绍
  8. hasOwnProperty()
  9. VS2005开发WinCE6.0应用程序 更换SDK后工程的移植
  10. 大数据学习-python通过Pyhive连接hive数据库
  11. 【java】swing窗口中的JOptionPane类及字符串转其他数据类型的应用
  12. 群晖3617可以有几个网卡_Synology 群晖 DS1621+ 六盘位NAS 开箱拆解评测
  13. wps表格l制作甘特图_WPS表格制作进度计划横道图教程
  14. M3DGIS三维电子沙盘开发教程第52课无人机倾斜摄影全景三维建模
  15. linux百度文字识别,基于Linux平台的图片文字识别系统
  16. linux 查看定时任务
  17. git删除远程创库命令
  18. 没的选择时,存在就是合理的::与李旭科书法字QQ聊天记录
  19. 1314520用计算机怎么算,表白公式数学公式抖音 抖音1314520怎么计算,快用计算器表白?...
  20. ZigBee中的技术问题以及解决方案

热门文章

  1. 打开一个文本文档,统计单词出现的次数的二种方法
  2. Python总的字符串
  3. 稻草熊娱乐股价再创新低:年内累计跌幅达80%,赵丽颖曾是其股东
  4. 旁流综合水处理器的作用
  5. 聚铭网络正式当选南京大数据产业协会理事单位
  6. drawable java什么意思_Java Drawable.draw方法代码示例
  7. NFS服务的配置与搭建(文件目录共享)
  8. 计算机运行正常突然关机,电脑开着突然就关机了怎么办_电脑开一会突然关机的处理方法...
  9. 趣味点名软件_大学老师“花样点名”,为保证出勤率也是拼了!这回看谁还敢翘课...
  10. 大数据24小时:Snh48推出全球首款明星人工智能,阿里云将在印度建成首个数据中心