我肯定不是我想成为的 Python 大师,我主要在业余时间学习/实验,很可能我会为有经验的用户提出一个小问题......但是,我真的很想去理解,这是一个对我帮助很大的地方。
现在,在适当的前提之后,Python 文档说:
4.6.3.可变序列类型
s.append(x) 将 x 添加到序列末尾(与
s[len(s):len(s)] = [x])
[...]
s.insert(i, x) 将 x 插入 s 中由 i 给出的索引处(与
s[i:i] = [x])
而且,此外:
5.1.更多关于列表的内容
list.append(x) 将一个项目添加到列表末尾。相当于
a[长度(a):] = [x]。
[...]
list.insert(i, x) 在给定位置插入一个项目。首先
参数是要在其之前插入的元素的索引,因此
a.insert(0, x) 在列表的前面插入,并且a.插入(len(a),
x) 等价于 a.append(x).
所以现在我想知道为什么有两种方法基本上可以做同样的事情?只拥有一个是不是可能(而且更简单)append/insert(x, i=len(this))
哪里的i
将是一个可选参数,当不存在时,是否意味着添加到列表的末尾?
这里追加和插入之间的区别与正常使用和大多数文本编辑器中的相同。追加添加到列表末尾,而插入则添加在指定索引的前面。它们之所以是不同的方法,既是因为它们做不同的事情,也因为append
预计操作会很快,同时insert
可能需要一段时间,具体取决于列表的大小和插入位置,因为插入点之后的所有内容都必须重新索引。
我不知道实际原因insert
and append
采取了不同的方法,但我会做出有根据的猜测,这是为了帮助提醒开发人员固有的性能差异。而不是一个insert
方法,带有一个可选参数,通常以线性时间运行,除非未指定参数,在这种情况下它将以恒定时间运行(非常奇怪),第二种方法将always添加恒定时间。这种类型的设计决策可以在 Python 的其他地方看到,例如当像这样的方法时list.sort
return None
,而不是新列表,作为reminder它们是就地操作,而不是创建(和返回)新列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)