鱼C论坛

 找回密码
 立即注册

课后作业047讲

已有 279 次阅读2019-12-5 17:06 |个人分类:课后作业

测试题(笔试,不能上机哦~):
0. 你知道 Python 基于序列的三大容器类指的是什么吗?
答:列表、字典、set集合
1. Python 允许我们自己定制容器,如果你想要定制一个不可变的容器(像 String),你就不能定义什么方法?
答:setitem、delitem方法
2. 如果希望定制的容器支持 reversed() 内置函数,那么你应该定义什么方法?
答:reversed方法
3. 既然是容器,必然要提供能够查询“容量”的方法,那么请问需要定义什么方法呢?
答:len方法
4. 通过定义哪些方法使得容器支持读、写和删除的操作?
答:getitem、setitem、delitem方法
5. 为什么小甲鱼说“在 Python 中的协议就显得不那么正式”?
答:可以自定义,所以显得不正式

动动手(一定要自己动手试试哦~):
0. 根据课堂上的例子,定制一个列表,同样要求记录列表中每个元素被访问的次数。这一次我们希望定制的列表功能更加全面一些,比如支持 append()、pop()、extend() 原生列表所拥有的方法。你应该如何修改呢?
要求1:实现获取、设置和删除一个元素的行为(删除一个元素的时候对应的计数器也会被删除)
要求2:增加 counter(index) 方法,返回 index 参数所指定的元素记录的访问次数
要求3:实现 append()、pop()、remove()、insert()、clear() 和 reverse() 方法(重写这些方法的时候注意考虑计数器的对应改变)

今天只有一道动动手的题目,但在写代码的时候要时刻考虑到你的列表增加了计数器功能,所以请务必要考虑周全再提交答案。
附课堂上的例子:
  1. class CountList:
  2.         def __init__(self, *args):
  3.                 self.values = [x for x in args]
  4.                 self.count = {}.fromkeys(range(len(self.values)), 0)

  5.         def __len__(self):
  6.                 return len(self.values)

  7.         def __getitem__(self, key):
  8.                 self.count[key] += 1
  9.                 return self.values[key]

本讲总结:
  1. 三大容器:列表、元组、字符串

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

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

GMT+8, 2025-10-22 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部