12.10 从列表删除元素

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

remove() 删除元素

remove() 会从列表中删除你选择的元素,把它丢掉:

  1. >>> letters = ['a', 'b', 'c', 'd', 'e']
  2. >>> letters.remove('c')
  3. >>> print letters
  4. ['a', 'b', 'd', 'e']

你不需要知道这个元素在列表中的具体位置,只需要知道它确实在列表中(可以是任何位置)。如果你想删除的东西根本不在列表中,就会得到错误消息:

  1. >>> letters.remove('f')
  2. Traceback (most recent call last):
  3. File "<pyshell#32>", line 1, in <module>
  4. letters. remove('f')
  5. ValueError: list.remove(x): x not in list

那么怎么才能知道列表中是否包含某个元素呢?后面就要讲到。先来看另外两种从列表中删除元素的方法。

del 删除

del 允许利用索引从列表中删除元素,如下所示:

  1. >>> letters = ['a', 'b', 'c', 'd', 'e']
  2. >>> del letters[3]
  3. >>> print letters
  4. ['a', 'b', 'c', 'e']

在这里,我们删除了第 4 个元素(索引 3),也就是字母 d。

pop() 删除元素

pop() 从列表中取出最后一个元素交给你。这说明,你可以为它指派一个名字,比如:

  1. >>> letters = ['a', 'b', 'c', 'd', 'e']
  2. >>> lastLetter = letters.pop()
  3. >>> print letters
  4. ['a', 'b', 'c', 'd']
  5. >>> print lastLetter
  6. e

使用 pop() 时还可以提供一个索引,如:

  1. >>> letters = ['a', 'b', 'c', 'd', 'e']
  2. >>> second = letters.pop(1)
  3. >>> print second
  4. b
  5. >>> print letters
  6. ['a', 'c', 'd', 'e']

在这里我们弹出了第 2 个字母(索引 1),也就是 b。弹出的元素赋给 second,而且会从 letters 删除。

括号里没有提供参数时,pop() 会返回最后一个元素,并把它从列表中删除。如果在括号里放入一个数,pop(n) 会给出这个索引位置上的元素,而且会把它从列表中删除。