鱼C论坛

 找回密码
 立即注册
查看: 3139|回复: 12

[技术交流] 《零基础入门学习Python》47讲内容归纳

[复制链接]
发表于 2016-3-15 14:18:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小牛有话说:
        各位鱼油,大家好。我是小牛,时光荏苒,岁月如梭,一晃半年过去了,小牛希望能在新的一年里把前面挖的坑给填起来,也衷心地希望各位鱼油能在阅读帖子过程中有所收获。。。。。。

本期主要内容导读:
        这一期我们归纳一下鱼神第四十七讲“魔法方法:定制容器”。这一期里面鱼神首先讲解了容器的概念,并引入了协议来说明如何定制容器,并通过讲解定义一个不可变的列表并记录列表中被访问元素的次数的例子来说明如何定制容器。下面,我们将对上述内容进行详细展开

1.相关知识点复习
列表推导式见第十二讲课后作业,列表推导式也叫列表解析,灵感取自于函数式编程语言Haskell,用以动态创建列表。使用形式为为[有关A的表达式,for A in B]。这里面第一个为A的一个表达式,A是一个自变量,B一般是一个序列类型, 举例说明:
>>> list2 = [x**2 for x in range(4)]    #这里面x为自变量,range(4)为一个序列类型
>>> list2
[0, 1, 4, 9]
fromkeys()是字典内置函数,详见第二十六讲:字典,当索引不好用时。使用形式为fromkeys(iterable, value=None, /),用以为每个key赋值同一个value并返回这个新字典,举例说明:
>>> dict.fromkeys(range(3),0)
{0: 0, 1: 0, 2: 0}
收集参数,详见第十八讲内容:函数,灵活即强大。当函数参数数量不固定时,定义形参变量时在其前面加上一个*,表示该参数为一个数组,所有实参参数都将作为该元组的一个元素传递过来。
>>> def func1(*t):
        print(t)
        print(type(t))
>>> func1(3,4,"xi")
(3, 4, 'xi')
<class 'tuple'>
>>> func1(1,2)
(1, 2)
<class 'tuple'>
2. 容器类型相关魔法方法
__len__(self) ,当执行len(self)时被触发,返回一个容器类型的个数;__getitem__(self,key),当执行self[key]时被触发,__setitem__(self,key,value)当执行self[key]=value时被触发;__delitem__(self,key)当执行del self[key]时被触发。
3. 定义一个不可变的列表并记录列表中被访问元素的次数,列表不可变则只需使用__len__(self)和__getitem__(self,key)两个魔法方法即可,但首先需要定义构造函数来初始化自定义列表,详细程序如下:
class Mycountlist:
    def __init__(self,*args):
        self.countlist1 = [x for x in args]
        self.countdict1 = dict.fromkeys(range(len(self.countlist1)),0)
    def __getitem__(self,key):
        self.countdict1[key]+=1
        return self.countlist1[key]
    def __len__(self):
        return len(self.countlist1)
>>> list1 = Mycountlist(1,3,5)
>>> list1[2]
5
>>> len(list1)
3
>>> list1.countdict1
{0: 0, 1: 0, 2: 1}

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +5 收起 理由
~风介~ + 5 + 5 + 5 感谢楼主无私奉献!
冬雪雪冬 + 5 + 5 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-15 17:45:28 | 显示全部楼层
个人感觉类的那部分忘记得差不多了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-15 19:02:38 | 显示全部楼层
~风介~ 发表于 2016-3-15 17:45
个人感觉类的那部分忘记得差不多了~

温故而知新!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-15 19:59:14 | 显示全部楼层

之前看视频学习的时候在这部分偷懒了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-16 13:29:54 | 显示全部楼层
~风介~ 发表于 2016-3-15 19:59
之前看视频学习的时候在这部分偷懒了~

^_^,我上学期学习这块内容时候还蛮认真的,不过到了现在还是忘得七七八八了,岁数大了,真不能和七八年前那时候比了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-16 13:30:28 | 显示全部楼层
~风介~ 发表于 2016-3-15 19:59
之前看视频学习的时候在这部分偷懒了~

^_^,我上学期学习这块内容时候还蛮认真的,不过到了现在还是忘得七七八八了,岁数大了,真不能和七八年前那时候比了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 19:49:02 | 显示全部楼层
醉酒青牛 发表于 2016-3-16 13:29
^_^,我上学期学习这块内容时候还蛮认真的,不过到了现在还是忘得七七八八了,岁数大了,真不能和七八年 ...

我比较简单 —— 就是懒~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-13 14:10:18 | 显示全部楼层
醉酒青牛 发表于 2016-3-16 13:30
^_^,我上学期学习这块内容时候还蛮认真的,不过到了现在还是忘得七七八八了,岁数大了,真不能和七八年 ...

原来记性不好的不止我一个人,我心里平衡多了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-18 13:38:17 | 显示全部楼层
学习啦,谢谢牛哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-1 14:42:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-22 14:33:06 | 显示全部楼层
温故而知新的意思!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 18:47:12 | 显示全部楼层
{0: 0, 1: 0, 2: 1}错误   应该>> list1.countdict1
{0: 0, 1: 0, 2: 0}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 16:36:52 | 显示全部楼层
很详细,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 14:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表