参考资料:《Python3编程指南》第六章
组合类型的特殊方法
特殊方法 | 使用 | 描述 |
---|---|---|
getitem(self,key) | y[k] | 返回序列y中的第key项或者映射类型y中k为键的值 |
delitem(self,key) | del y[k] | 删除序列y中的第key项或者映射类型y中k为键的值 |
iter(self) | for x in y:pass | 返回序列y或者映射类型y得迭代子 |
len(self) | len(y) | 返回序列y的字符数或者映射类型y的个数 |
reversed(self) | reversed(y) | 返回序列y中的第key项或者映射类型y的反向迭代子 |
setitem(self,key,v) | y[k] = v | 将序列中的第k项设置为v或者将映射类型y中k的值设置为v |
contains(self,x) | x in y | 如果x在序列y中或者x为映射类型y的键,则返回True |
SortedList实现
利用list和上述特殊方法,自定义一个可排序的list,代码如下:
_identify = lambda x: x
class SortedList:
def __init__(self,sequence=None,key=None):
"""初始化SortedList(参考list的创建方式)
:param sequence:
:param key:
"""
# key用于指定排序规则,如果没有指定,则通过Lambda函数指定自身作为排序规则
self.__key = key or _identify
# 如果key是可调用对象(函数和方法),则返回True
assert hasattr(self.__key, "__call__")
# SortL