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

列表生成器:
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返回的列表对象消耗较少的内存(范围比较大的时候)。但是对特殊目的对象指向循环操作的开销略微高于对列表执行循环的开销。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 用于python面试整理,主要来源于http://www.cnblogs.com/skiler/p/6952707...
    十里江城阅读 2,343评论 0 13
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 3,801评论 0 27
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,934评论 17 410
  • Python史上最全开发总结(转自静熙老师哈哈哈) 两本不错的书: 《Python参考手册》:对Python各个标...
    春风在抱阅读 756评论 1 4
  • 年轻,会傻到和时间赛跑,压缩时间。殊不知,你哪能比的过它。最后把自己整的遍体鳞伤。只剩焦虑。 别和自己过不去。别老...
    李可乐不加冰阅读 162评论 0 0