手写 Python 虚拟机
海纳
华为资深编译专家,原 Huawei JDK 团队负责人
1152 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 17 讲/共 28 讲
导学|直播加餐:三小时掌握C++ (2讲)
对象系统:面向对象编程的核心设施 (2讲)
手写 Python 虚拟机
15
15
1.0x
00:00/00:00
登录|注册

14|列表(下):列表所支持的基本操作

你好,我是海纳。
上节课我们介绍了列表的基本实现,初步实现了往列表中增加新元素、修改列表中的元素等功能。这节课我们会继续实现列表支持的其他基本操作,主要包括删除元素、对元素进行排序,以及迭代访问列表元素等功能。

删除元素

从列表中删除元素,如果是删除最后一个元素,可以直接使用 list 的 pop 方法。pop 方法与 append 方法刚好是一对逆操作。append 用来在列表的末尾添加元素,而 pop 则是删除列表的最后一个元素。
而删除指定位置的元素有两种方法,一种是使用 del 关键字,另一种是使用列表的 remove 方法。接下来,我们逐个实现它们。先从 pop 方法开始。

实现 pop 方法

先使用 C++ 实现 list_pop 函数,用于将列表末尾的元素删除。list_pop 只需要简单地调用列表对象上的 pop 方法即可。而 pop 方法在第 4 节课中定义 list 的时候,我们就已经实现了。
HiObject* list_pop(ObjList args) {
HiList* list = (HiList*)(args->get(0));
assert(list && list->klass() == ListKlass::get_instance());
return list->pop();
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

1. 实现列表的基本操作,包括删除元素、对元素进行排序,以及迭代访问列表元素等功能。 2. 实现删除元素的方法,包括使用 pop 方法删除最后一个元素,使用 del 关键字删除指定位置的元素,以及使用 remove 方法删除与指定参数相等的值。 3. 实现对列表元素进行排序,包括 reverse 方法用于倒序排列,sort 方法用于升序排列。 4. 实现列表的 pop 方法,通过调用列表对象上的 pop 方法实现列表末尾元素的删除。 5. 实现列表的 del 关键字,引入新的字节码 DELETE_SUBSCR,并在 HiObject 中添加 del_subscr 方法以及在 ListKlass 中实现该虚函数。 6. 实现列表的 remove 方法,通过 equal 方法比较列表中的元素与输入参数是否相等,若相等则调用 delete_index 方法删除元素。 7. 实现列表的 sort 方法,采用冒泡排序算法,使列表元素按从小到大的顺序排列。 8. 实现列表的迭代器,包括 GET_ITER 和 FOR_ITER 字节码的实现,以及 ListIteratorKlass 和 ListIterator 的设计和实现。 9. 优化迭代器部分,通过引入 StringTable 类记录字符串常量,避免重复创建对象,提高性能。 10. 完成删除元素的所有方法的实现,并进行综合测试验证。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手写 Python 虚拟机》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部