12.10 从列表删除元素

    如何从列表删除或者去除元素呢?有 3 种方法:remove()delpop()

    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) 会给出这个索引位置上的元素,而且会把它从列表中删除。