python进阶

一、容器、迭代器、生成器

http://python.jobbole.com/87805/

容器

一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。尽管绝大多数容器都提供了某种方式来获取其中的每一个元素,但这并不是容器本身提供的能力,而是可迭代对象赋予了容器这种能力。通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存,比如迭代器和生成器对象),在Python中,常见的容器对象有:
list, deque, ….
set, frozensets, ….
dict, defaultdict, OrderedDict, Counter, ….
tuple, namedtuple, …
str

迭代器和生成器

https://www.zhihu.com/question/20829330

迭代器

使用内建的工厂函数iter(iterable)可以获取迭代器对象:iter(range(5));迭代器支持迭代协议的对象:for、in、not in;

生成器

当需要有一百万个元素的数组时,如果直接写出数组,将会保存到内存,那么会造成资源浪费。生成器就是在你需要的时候,会生成这个数组,占用空间极小。

生成器一般都是迭代器,但是迭代器不一定是生成器;


def range1(n):
    i = 0
    r = []
    while i < n:
        i += 1
        r.append(i)
    return r
    
def range2(n):
    i = 0
    while i < n:
        i += 1
        yield i
  • 简写如下 [i for i in range(100)]
  • 用 圆括号 代替 中括号, 就能得到一个生成器 (i for i in range(100))
生成器.PNG

列表推倒

列表推导:可以加条件 if,可以进行运算
字典推导:和列表推导一样
集合推到:{}

l = [i for i in range(10)]
# 相当于
l = []
for i in range(10):
    l.append(i)
# 更复杂的例子如下
l = [i for i in range(10) if i % 2 == 0]
# 相当于
l = []
for i in range(10):
    if i % 2 == 0:
        l.append(i)
        
l = [str(i) for i in range(10)]
  • 字典推倒
{k: 1 for k in range(10)}
{str(k): 1 for k in range(10)}
print({str(k): 1 for k in range(10)})
  • 集合推到
>>> {i.lower() for i in ['A','B']}
{'a', 'b'}
>>> a = {i.lower() for i in ['A','B']}
>>> type(a)
<class 'set'>
>>>

python 类

  • 静态方法(类)
    • @staticmethod 修饰的方法
    • 只能用 类.方法() 的方式来调用
    • 实际上相当于一个普通函数
    • 放到类里只是为了看上去整齐点
    • 没有额外的参数
  • 类方法(类、实例子)
    • @classmethod 修饰的方法
    • 可以用 类.方法() 和 实例.方法() 来调用
    • 有一个 cls 参数代表调用者的 class
  • 实例方法(实例)
    • 普通方法
    • 有一个 self 参数
    • 只能被 实例.方法() 调用

python 参数

  • *args **kwargs

    • 多参数和关键字参数
  • def log(*args):

    • args 是一个包含了所有参数的 list
    • print(*args)
    • log(1, 2, 3, 4)
  • 匿名函数

    • lambda 函数
    • f = lambda a, b: a + b
    • 上面一句相当于下面一句
    def add(a, b):
        return a + b
    f = add
    
    • 匿名函数中只能有一个语句
    • 如果代码复杂,在 Python 中就不应该使用匿名函数
    • sorted(d, key=lambda part: part[0])

迭代器与生成器

类方法

匿名函数

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

推荐阅读更多精彩内容

  • word直接复制来了,格式就不改了。至于这门课怎么复习,只要平时实验都认真完成、报告认真写,平时分都很高;考试的话...
    Jozhn阅读 4,502评论 0 8
  • 第一章:概述 什么是操作系统? 是一段一直运行在计算机上的程序 是资源的分配者 向上管理软件向下管理硬件 为用户提...
    Moonsmile阅读 2,301评论 0 4
  • 节日倍思慈母亲,两耳犹闻教诲声。 肩挑斜月沐落日,手织麻衣伴孤灯。 育人偶念四言句,养子常吟三字经。 公婆孝敬心地...
    竹影_张育清阅读 190评论 0 2
  • CSS3 用户界面 在 CSS3 中, 增加了一些新的用户界面特性来调整元素尺寸,框尺寸和外边框。在本章中,您将了...
    hx永恒之恋阅读 229评论 0 2
  • 01 七月,高考结束快一个月了。 前段时间,各自媒体,公众号关乎高考的文章铺天盖地而来。或怀念从前,或心又不甘,又...
    林夏v阅读 336评论 4 5