作业疑问:如何将列表方法调用转换为list命名空间下的函数调用?
把列表实例方法转换为list命名空间下的函数调用
别担心,这个要求其实是在帮你理解Python中类方法和实例方法的底层逻辑。简单来说:Python的列表实例方法(比如sort()、append())本质上是定义在list类中的函数,当你用列表实例调用这些方法时,Python会自动把实例作为第一个参数(也就是方法里的self)传递进去。 所以要转换成list命名空间下的函数调用,只需要手动把列表实例作为第一个参数传给list类的对应方法就行。
针对你给出的例子,具体转换如下:
原方法 vs list命名空间函数调用
假设我们的初始列表是:
lst = [2, 3, 4, 5]
(a) lst.sort() → list.sort(lst)
- 原方法:
lst.sort()会原地排序原列表(直接修改lst,没有返回值) - 转换后:
list.sort(lst)和原方法完全等价,同样是原地排序lst,效果一模一样。
(b) lst.append(3) → list.append(lst, 3)
- 原方法:
lst.append(3)把元素3原地添加到列表末尾 - 转换后:
list.append(lst, 3)做的是同样的事情,手动把lst作为第一个参数传给list类的append方法。
(c) lst.count(3) → list.count(lst, 3)
- 原方法:
lst.count(3)返回列表中元素3出现的次数(这里初始列表里有1个3,所以返回1) - 转换后:
list.count(lst, 3)返回的结果和原方法完全一致。
小提醒:别把
list.sort(lst)和内置函数sorted(lst)搞混哦!sorted(lst)会返回一个新的排序后的列表,不会修改原列表;而list.sort(lst)和lst.sort()一样是原地修改原列表。
内容的提问来源于stack exchange,提问作者Ryan Mills
相关产品推荐
相关产品推荐

