12.9 向列表增加元素的其他方法

    我们已经看到了如何使用 append() 向列表增加元素。不过除此以外还有其他一些方法。实际上,向列表增加元素共有 3 种方法:append()extend()insert()

    • append() 向列表末尾增加一个元素。

    • extend() 向列表末尾增加多个元素。

    • insert() 在列表中的某个位置增加一个元素,不一定非得在列表末尾。你可以告诉它要在哪里增加元素。

    增加到列表末尾:append()

    我们已经见过 append() 是如何工作的。它把一个元素增加到列表末尾:

    >>> letters.append('n')
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', 'n']

    再来增加一项:

    >>> letters.append('g')
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', 'n', 'g']

    注意这些字母并没有按顺序排列。这是因为 append() 只是将元素增加到列表末尾。如果希望这些元素按顺序排列,必须对它们排序。稍后就会谈到排序。

    扩展列表:extend()

    extend() 在列表末尾增加多个元素:
    >>> letters.extend(['p', 'q', 'r'])
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', 'n', 'g', 'p', 'q', 'r']

    注意 extend() 方法的圆括号中是一个列表。列表有一个中括号,所以对于 extend(),可以同时有圆括号和中括号。 提供给 extend() 的列表中的所有内容都会增加到原列表的末尾。 插入一个元素:insert()

    insert() 会在列表中的某个位置增加一个元素。可以指定希望将元素增加到列表的哪个位置:

    >>> letters.insert(2, 'z')
    >>> print letters
    ['a', 'b', 'z', 'c', 'd', 'e', 'n', 'g', 'p', 'q', 'r']

    在这里,我们将字母 z 增加到索引为 2 的位置。索引 2 是列表中的第 3 个位置(因为索引从 0 开始)。原先位于第 3 个位置上的字母(也就是 c)会向后推一个位置,移到第 4 个位置上。它后面的每一个元素也都要向后移一个位置。

    append()extend() 的区别

    有时 append()extend() 看起来很类似,不过它们确实有一些区别。下面再回到原来的列表。首先,用 extend() 增加 3 个元素:

    >>> letters = ['a','b','c','d','e']
    >>> letters.extend(['f', 'g', 'h'])
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

    现在,再用 append() 做同样的事情:

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> letters.append(['f', 'g', 'h'])
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', ['f', 'g', 'h']]

    怎么回事?嗯,我们前面说过,append() 会向列表增加一个元素。它怎么会增加 3 个元素呢?其实它并没有增加 3 个元素,这里确实只增加了一个元素,只不过这刚好是一个包含 3 项的列表。正是这个原因,所以在这个列表中多了一对中括号。要记住,列表可以包含任何东西,也包括其他列表。这个例子就属于这种情况。

    insert() 的工作与 append() 相同,只不过你可以告诉它在哪里放入新的元素。 append() 总是把新元素放在列表末尾。