1 .关于列表方法
列表数据类型有更多的方法。下面是List对象的所有方法:
list.append(x)
将一项添加到列表的末尾。等价于a[len(a):]=[x]
。list.extend(iterable)
通过追加可迭代中的所有项来扩展列表。等价于a[len(a):] = iterable
。
list = [2,5,3,7,6,9]
list.extend(range(2,8))
list
[2, 5, 3, 7, 6, 9, 2, 3, 4, 5, 6, 7]
list
[2, 5, 3, 7, 6, 9, 2, 3, 4, 5, 6, 7]
list[len(list):] = range(9,13)
list
[2, 5, 3, 7, 6, 9, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12]
list.insert(i, x)
在给定位置插入项。第一个参数是要插入的元素的索引,所以a.insert(0,x)
插入在列表的前面,a.insert(len(a),x)
等价于a.append(x)
。
append 和 insert的区别是 append将一项添加到列表末尾, 而 insert可以插到指定的位置list.remove(x)
从值等于x的列表中删除第一项。如果没有这样的项目,会触发错误。list.pop([i])
删除列表中给定位置的项,并返回它。如果没有指定索引,a.pop()将移除并返回列表中的最后一项。(方法签名中i周围的方括号表示参数是可选的,而不是在该位置键入方括号。您将经常在PythonLibrary引用中看到这种符号。)
remove和pop之间的区别:remove需要一个参数,这个参数就是要删除的值,而pop需要一个参数,这个参数是指定的索引,若没有,pop会删除列表的最后一项list.clear()
从列表中删除所有项。相当于del a[:]
。list.index(x[, start[, end]])
在值等于x的第一个项的列表中返回基于零的索引。如果没有此类项,则引发ValueError
。
可选参数start
和end
被解释为片表示法,并用于将搜索限制在列表的特定子序列上。返回的索引是相对于完整序列的开头而不是开始参数计算的。list.count(x)
返回列表中x出现的次数。list.sort(key=None, reverse=False)
对列表中的项进行排序(参数可用于排序自定义,请参见sorted()
以了解它们的说明)。list.reverse()
反转列表中的元素。list.copy()
返回列表的浅拷贝。相当于a[:]
。
使用大多数List方法的示例:
>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
>>> fruits.count('apple')
2
>>> fruits.count('tangerine')
0
>>> fruits.index('banana')
3
>>> fruits.index('banana', 4) # Find next banana starting a position 4
6
>>> fruits.reverse()
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
>>> fruits.append('grape')
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
>>> fruits.sort()
>>> fruits
['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
>>> fruits.pop()
'pear'
您可能已经注意到,只修改列表的插入、删除或排序等方法没有打印返回值-它们返回默认的None
。[1]这是Python中所有可变数据结构的设计原则。
2. 使用列表作为栈
List方法非常容易地将列表用作栈,其中添加的最后一个元素是检索到的第一个元素(“后入先出”)。若要将项添加到堆栈顶部,请使用append()
。若要从堆栈顶部检索项,请使用pop()
而不使用显式索引
3 使用列表作为队列
还可以使用List作为队列,其中添加的第一个元素是检索到的第一个元素(“先入先出”);然而,列表对此并不有效。尽管列表末尾的添加和弹栈是快速的,但从列表开始执行插入或弹栈的速度很慢(因为所有其他元素都必须因为一个元素而移动)。
列表居然可以用作队列,可以使用popleft() 函数删除第一个值
若要实现队列,请使用具有快速从两端添加和弹栈的collections.deque
。例如:
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.popleft() # The first to arrive now leaves
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])