dan*_*tra 6 python insert append
我肯定不是我想成为的Python大师,而且我主要是在业余时间学习/试验,很可能我会为有经验的用户提出一个微不足道的问题...但是,我真的很想要理解,这是一个帮助我很多的地方.
现在,在适当的前提下,Python文档说:
4.6.3.可变序列类型
s.append(x)将x附加到序列的末尾(与s [len(s):len(s)] = [x]相同)
[...]
s.insert(i,x)在i给出的索引处将x插入s(与s [i:i] = [x]相同)
此外:
5.1.更多关于列表
list.append(x)将项添加到列表的末尾.相当于[len(a):] = [x].
[...]
list.insert(i,x)在给定位置插入一个项目.第一个参数是要插入的元素的索引,因此a.insert(0,x)插入列表的前面,而a.insert(len(a),x)等同于a.append( x).
所以现在我想知道为什么有两种方法可以做,基本上,同样的事情呢?那岂不是成为可能(和更简单),以只有一个append/insert(x, i=len(this))地方的i将是一个可选的参数,当不存在,就意味着添加到列表的末尾?
这里append和insert之间的区别与正常用法和大多数文本编辑器中的区别相同.Append添加到列表的末尾,而insert 在指定的索引前添加.他们是不同的方法的原因是因为他们做了不同的事情,因为append可以预期是一个快速的操作,而insert可能需要一段时间取决于列表的大小和你插入的位置,因为插入点之后的所有内容必须重新编制索引.
我不知道实际的原因,insert并且采用append了不同的方法,但我会做出有根据的猜测,它是为了帮助提醒开发人员固有的性能差异.insert使用可选参数而不是一个方法,通常在线性时间内运行,除非未指定参数,在这种情况下它将以恒定时间(非常奇怪)运行,第二种方法始终是恒定时间.这种类型的设计决策可以在Python的其他地方看到,例如当list.sort返回方法None而不是新列表时,提醒它们是就地操作,而不是创建(并返回)新列表.