[Python] 利用组合类型的特殊方法实现可排序SortedList

本文介绍了如何利用Python的特殊方法创建一个自定义的可排序SortedList。SortedList结合了list的功能并支持排序,通过sorted()方法和key参数实现。add()方法采用二分法确保元素按顺序插入。此外,文章探讨了如何判断对象是否包含特定属性以确定其可调用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:《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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值