12.10 从列表删除元素
如何从列表删除或者去除元素呢?有 3 种方法:remove()、del 和 pop()。
用 remove() 删除元素
remove() 会从列表中删除你选择的元素,把它丢掉:
>>> letters = ['a', 'b', 'c', 'd', 'e']
>>> letters.remove('c')
>>> print letters
['a', 'b', 'd', 'e']
你不需要知道这个元素在列表中的具体位置,只需要知道它确实在列表中(可以是任何位置)。如果你想删除的东西根本不在列表中,就会得到错误消息:
>>> letters.remove('f')
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
letters. remove('f')
ValueError: list.remove(x): x not in list
那么怎么才能知道列表中是否包含某个元素呢?后面就要讲到。先来看另外两种从列表中删除元素的方法。
用 del 删除
del 允许利用索引从列表中删除元素,如下所示:
>>> letters = ['a', 'b', 'c', 'd', 'e']
>>> del letters[3]
>>> print letters
['a', 'b', 'c', 'e']
在这里,我们删除了第 4 个元素(索引 3),也就是字母 d。
用 pop() 删除元素
pop() 从列表中取出最后一个元素交给你。这说明,你可以为它指派一个名字,比如:
>>> letters = ['a', 'b', 'c', 'd', 'e']
>>> lastLetter = letters.pop()
>>> print letters
['a', 'b', 'c', 'd']
>>> print lastLetter
e
使用 pop() 时还可以提供一个索引,如:
>>> letters = ['a', 'b', 'c', 'd', 'e']
>>> second = letters.pop(1)
>>> print second
b
>>> print letters
['a', 'c', 'd', 'e']
在这里我们弹出了第 2 个字母(索引 1),也就是 b。弹出的元素赋给 second,而且会从 letters 删除。
括号里没有提供参数时,pop() 会返回最后一个元素,并把它从列表中删除。如果在括号里放入一个数,pop(n) 会给出这个索引位置上的元素,而且会把它从列表中删除。
