列表实战——就地改变列表——列表方法调用
和字符串一样,Python的列表对象还支持特定类型的方法调用,许多方法都是就地修改被作用列表:
>>> L = ['eat', 'more', 'SPAM!']
>>> L.append('please') # Append method call: add item at end
>>> L
['eat', 'more', 'SPAM!', 'please']
>>> L.sort() # Sort list items ('S' < 'e')
>>> L
['SPAM!', 'eat', 'more', 'please']
方法在第7章被引入。简言之,它们是联系和作用于特定对象的函数(其实是引用函数的对象属性)。方法提供了特定类型的工具;比如,这里出现的列表方法通常只对列表可用。
可能最常使用的列表方法是append
,它简单地将单个项(对象引用)添加到列表末尾。不像连接,append
期待传入一个单对象,而非一个列表。L.append(X)
的效果类似于L+[X]
,但前者就地修改L,而后者创建一个新列表[20]。这里的sort
方法将列表的项进行排序,但它值得享有自己单独的一节。
Note20
不像 +
连接,append
不必产生新对象,所以它通常比+
更快。还可以使用前一节中聪明的切片赋值来模拟append
:L[len(L):] = [X]
就像 L.append(X)
,L[:0]=[X]
就像在列表前追加。这两个操作都删除空切片并插入 X,快速地就地修改L,像append
一样。然而,两个都有争议地比列表方法更复杂。比如,L.insert(0,X)
也能在列表前追加一项,而且似乎明显更易记;L.insert(len(L), X)
也在末尾插入一个对象,但除非你喜欢打字,最好还是使用 L.append(X)
!