美文网首页PYTHON
python_列表_迭代_函数_闭包

python_列表_迭代_函数_闭包

作者: LoseDemon | 来源:发表于2018-07-11 21:29 被阅读15次

列表生成器:
1、生成一个普通列表:
ls = [x for x in range(101)]
为什么学习列表生成器:降低内存kaixiao
两种实现:
1:[] ==> () generator
next方法的时候会返回下一个值
next()
2、将函数转换为列表生成器
yield generator
send()使用
3、协程 实现一个多任务

在编程中,我们有时候会需要生成一个列表,但是该列表可能占用大量内存,此时列表直接加载到内存中就不可取了,python提供了一个列表生成器。
列表生成器是一段生成对应列表的算法:
1、将我们之前的[]换成() []==>()
next()方法来获取下一个列表的值
for来迭代生成器
2、将函数转换为列表生成器
斐波那契数列:从第三个数开始,前两个数之和等于第三个数(1,2,3,5,8)
def fob(max):
temp = 0
a = 1
b = 0
while b <= max:
print(a)
如果列表是由一个函数得到,可以将这个函数转换为一个列表生成器,使用关键字yield,当函数中出现yield关键字,此时该函数的返回值自动的转换为一个列表生成器。

迭代器:
1、可以迭代的对象(collections.Iterator):
列表
元组
集合
字典
字符串
如何判断一个对象是可以迭代的?
通过collections模块的iterable类型来判断。
from collections import Iterable
isinstance('abc',Iterable) #str是否可迭代
Ture

    isinstance([1,2,3],Iterable)  #list是否可迭代
    Ture

    isinstance(123,Interable)   #整数是否可迭代
    False

2、迭代器(collections.Iterator):
    能够被next调用,返回下一个值的对象
    可以被next()函数调用并不断返回下一个值的对象成为迭代器
    
    总结:
        1、生成器就是迭代器
        2、迭代器不一定是生成器
        3、可迭代的对象不一定是迭代器
        4、迭代器肯定可以被迭代
 3、将可迭代的对象转换为迭代器
    迭代器 = iter(可迭代的对象)

什么是函数?
为了完成某一功能的代码集合。
*args 函数的可变参数,以元组的形式传递参数
*kwargs命名参数
def add(x,y,
args):
return x + y
递归:函数自身调用自身就会形成递归
函数调用
sum = add(5,8)

lambda表达式,也就是python匿名函数,简化了代码操作。
增加了代码难度,降低了可读性,增加了代码维护的成本。
cb(lambda msg:print("接受到一个信息,信息是==>"msg))

闭包:闭包就是能够读取其他函数内部变量的函数
闭包是弱数据类型语言所特有的特性
闭包的特点:函数嵌套函数
闭包的作用:
1、局部变量全局化,防止全局变量被污染 js

面试题:
请简略说明xrange和range的区别。
range:返回等差数列。构建等差数列,起点是start,终点是stop,但不包含stop,公差是step。start和step是可选项,没给出start时,从零开始;没给出step时,默认公差是1.
xrange:xrange与range类似,只是返回的是一个"xrange object"对象,而非数组list。要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟出一块很大的内存空间,这两个基本上都是在循环的时候使用。
区别:range可以返回一个可以用于所有目的的普通列表对象,而xrange将返回一个特殊目的的对象,尤其适用于迭代操作,但是xrange并不返回一个迭代器,如果需要这样一个迭代器,可以调用iter(xrange(x))。xrange返回的特殊目的对象比range返回的列表对象消耗较少的内存(范围比较大的时候)。但是对特殊目的对象指向循环操作的开销略微高于对列表执行循环的开销。

相关文章

  • python_列表_迭代_函数_闭包

    列表生成器:1、生成一个普通列表:ls = [x for x in range(101)]为什么学习列表生成器:降...

  • Lua语言学习教程

    lua闭包 函数尾调用 迭代器

  • 5、迭代器实现

    闭包实现迭代器 迭代函数实现迭代器 --1,调用迭代函数,(把状态变量和控制变量当做参数传递给迭代函数) 状态变...

  • [ Swift 进阶]之 函数—综述 读书笔记

    本章的重点三个关键字: 函数, 闭包,闭包表达式 首先来看一个简单的函数:func函数名(参数列表)->返回类型 ...

  • 4.3理解闭包

    一个完整的函数包含函数名、参数列表、返回值和函数体,主要是为了实现代码块的复用。闭包和函数有着类似的作用,然而闭包...

  • python numpy pandas

    py笔记 函数的嵌套 函数的闭包 装饰器 迭代器 匿名函数 lambda 表达式 计算5!+4!+3!+2!+1!...

  • 如何理解闭包?

    1、定义: 嵌套在函数作用域中的函数,称为闭包函数。该作用域称为闭包环境。通过闭包函数可以访问闭包函数所在函数作用...

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

  • 3.逃逸闭包,非逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包:当函数执行过程中,执行的函数内部的闭包...

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

网友评论

    本文标题:python_列表_迭代_函数_闭包

    本文链接:https://www.haomeiwen.com/subject/ubeyuftx.html