迭代器

1.迭代器就是迭代的工具,迭代也可以说成是重复,并且每一次重复都是基于上一次的结果而来的,在python中一切皆对象.

2.可迭代对象:只要拥有__iter__方法的对象都是可迭代对象.

3.可迭代的对象有:python内置的str list tuplie dict set file 都是可迭代对象

  • 特点:内置有__iter__方法的都叫可迭代的对象

迭代器对象

1.迭代器对象的概念

  • 可迭代的对象执行__iter__方法得到的返回值,并且可以迭代对象会有一个__next__方法,并且 文件本身就是迭代器对象

    总结

    1.可迭代对象:拥有iter方法的对象就是可迭代对象 推导:可迭代对象不一定是迭代器对象

    2.迭代器对象:拥有iter方法和next方法的就是可以迭代对象, 推导:迭代器对象一定是可迭代对象

    3.文件即是可迭代对象,也是迭代器对象

    缺点:取值麻烦,只能一个一个取,并且只能往后取,值取了就没了

    无法使用len()方法获取长度

for 循环原理

  • for 循环称为迭代器循环,in后必须是可迭代的对象

    解释:因为迭代器使用 __ iter__后还是迭代器本身,因此for循环不用考虑in后的对象是可迭代对象还是迭代器对象,

三元表达式

条件成立时返回值if条件else条件不成立时的返回值
x=10
y=20
x if x>y else y

列表推导式

[i for i in range(10)]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

字典生成式

print({i: i**2 for i in range(10)})

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

zip方法

res = zip('abcd',[1,2,3,4])
dic = dict()
for k,v in res:
dic[k] = v print(dic)
# 方法二
print({k:v for k,v in zip('abcd',[1,2,3,4])})

生成器表达式

  • 把列表推导式的[]换成(),就是生成器表达式
  • 优点:省内存,一次只产生一个值在内存中
  • 列表推导式相当于直接给你一筐鸡蛋,而生成器表达式相当于给你一只老母鸡
# 列表推导式
with open('52.txt', 'r', encoding='utf8') as f:
nums = [len(line) for line in f] print(max(nums)) # 生成器表达式
with open('52.txt','r',encoding='utf8') as f:
nums = (len(line) for line in f) print(max(nums)) # ValueError: I/O operation on closed file.

yield

yield的英文单词意思是生产,在函数中但凡出现yield关键字,再调用函数,就不会继续执行函数体代码,而是会返回一个值。

def func():
print('from 1')
yield
print('from 2')
yield

函数递归

函数的嵌套调用时:函数嵌套函数,函数的递归调用:它是一种特殊的嵌套调用,但是它在调用一个函数的过程中,又直接或间接的调用了它本身
def foo():
print('from foo')
foo() foo() # 进入死循环
如果递归函数不断的调用函数自身,那么这个递归函数将会进入一个死循环,因此我们应该给递归函数一个明确的结束条件

1.直接调用:直接在函数内部调用函数自身

2.间接调用:不在原函数体内调用函数自身,而是通过其他的方法间接的调用函数自身

  • 递归必须要有的两个明确阶段

    1.递推:一层一层递归调用下去,进入下一层递归的问题规模都将会减小

    2.回溯:递归碧玺要有一个明确的结束条件,找满足该条件开始一层一层回溯

    3.递归的精髓在于通过不断的重复逼近一个最终的结果

Day 13迭代器生成器的更多相关文章

  1. Day 13 迭代器,生成器.

    一.迭代器 可以进行for循环的 数据类型 str ,list tuple dict set 文件句柄 什么是可迭代对象? 方法一:dir(被测对象) 如果他含有__iter__,那这个对象就叫做可迭 ...

  2. Python 迭代器&生成器

    1.内置参数     Built-in Functions     abs() dict() help() min() setattr() all() dir() hex() next() slice ...

  3. python杂记-4(迭代器&生成器)

    #!/usr/bin/env python# -*- coding: utf-8 -*-#1.迭代器&生成器#生成器#正确的方法是使用for循环,因为generator也是可迭代对象:g = ...

  4. Python学习笔记——基础篇【第四周】——迭代器&生成器、装饰器、递归、算法、正则表达式

    目录 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 #作业:计算器开发 a.实现加减成熟及 ...

  5. python 迭代器 生成器

    迭代器 生成器 一 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前 ...

  6. Python基础-迭代器&生成器&装饰器

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 我现在有个需求,看 ...

  7. 迭代器/生成器/装饰器 /Json & pickle 数据序列化

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  8. Learn day5 迭代器\生成器\高阶函数\推导式\内置函数\模块(math.time)

    1.迭代器 # ### 迭代器 """能被next调用,并不断返回下一个值的对象""" """ 特征:迭代器会 ...

  9. Python装饰器、迭代器&生成器、re正则表达式、字符串格式化

    Python装饰器.迭代器&生成器.re正则表达式.字符串格式化 本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用 ...

随机推荐

  1. ASP的Global.asa使用说明

    /*-------------------ASP文档参考集-----------------------*/ *-->作者:草履虫 *-->时间:2007-4.28---2007-4.30 ...

  2. hdu 3714 三分

    #include<stdio.h> #define mi 1e-9 #define N 11000 struct node{ double x,y,z; }a[N]; int n; dou ...

  3. 【ACM】hdu_1234_开门人和关门人_201307300845

    开门人和关门人Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. 生产上数据库大量的latch free 导致的CPU资源耗尽的问题的解决

    中午的时候,我们生产上的某个数据库,cpu一直居高不下 通过例如以下的sql语句,我们查看当时数据库的等待,争用的情况: select s.SID, s.SERIAL#, 'kill -9 ' || ...

  5. 沁园春&#183;咏史

    沁园春·咏史 文/天地尘埃2020 谁是谁非?宋桧连金,武穆饮生. 叹止渴饮鸩.灰飞烟灭:诵传千载:长跪无声. 懿旨朱批?直书秉笔?天地一根秤自衡. 何曾忘! 这英雄千古,犹恨空横! 幽幽何觅忠魂.耻 ...

  6. HDU 2027 汉字统计

    汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. Libgdx: android单机斗地主支持局域网wifi联网的网络模块核心代码

    这个作品是我近期写的,结合我的毕业设计的通信模块和之前的单机版斗地主.我已经上架到豌豆荚了,贴了点广告,看看能不能赚点茶钱. 但是一点也不乐观.因此我想分享给大家源代码. 仅仅要不用于商业. 以下先贴 ...

  8. 安卓离线SDK Windows版 资源包下载地址全集

    1.Tools    https://dl-ssl.google.com/android/repository/platform-tools_r19.0.1-windows.zip https://d ...

  9. SQL SERVER读书笔记:阻塞与死锁

    阻塞是事务隔离带来的副作用,而并不是SQL SERVER的错. 死锁则是互相争用资源而引发.由于死锁会选择牺牲者,所以死锁的危害没有阻塞大.但有时为了解决死锁,会采取对资源加锁,导致阻塞的方式来避免.

  10. 火狐Vimperator插件

    http://www.iplaysoft.com/vimium-and-vimperator.html http://wangbixi.com/x2923/comment-page-1/