在Python中向列表(数组)添加元素:append(), extend(), insert()

商业

在 Python 中,要向一个 list (array) 类型的列表添加一个元素,或者组合另一个列表,可以使用列表方法 append()、extend() 和 insert() 。你也可以使用 + 操作符或 slice 来指定一个位置,并将其分配。

这里提供了以下信息。

  • 在最后添加元素:append()
  • 将另一个列表或元组合并到最后(连接)。: extend(),+经营者
  • 在指定位置添加(插入)一个元素。:insert()
  • 在指定位置添加(插入)另一个列表或元组:一片

在最后添加元素: append()

使用列表的append()方法,你可以将元素添加到末尾(最后)。如果你想把它添加到末尾以外的位置,比如说顶部,可以使用下面描述的insert()。

l = list(range(3))
print(l)
# [0, 1, 2]

l.append(100)
print(l)
# [0, 1, 2, 100]

l.append('new')
print(l)
# [0, 1, 2, 100, 'new']

列表也是作为一个单一元素添加的。它们不被合并。

l.append([3, 4, 5])
print(l)
# [0, 1, 2, 100, 'new', [3, 4, 5]]

将另一个列表或元组合并到最后(连接)。: extend(), +经营者

通过列表方法 extend(),你可以在结尾(末端)结合另一个列表或元组。所有的元素将被追加到原始列表的末尾。

l = list(range(3))
print(l)
# [0, 1, 2]

l.extend([100, 101, 102])
print(l)
# [0, 1, 2, 100, 101, 102]

l.extend((-1, -2, -3))
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3]

请注意,每个字符(元素)都是一个字符一个字符地添加到字符串中。

l.extend('new')
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w']

也可以使用+运算符而不是extend()方法进行连接。

+运算符,就会返回一个新的列表。+=这也将允许你把它添加到一个现有的列表中。

l2 = l + [5, 6, 7]
print(l2)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w', 5, 6, 7]

l += [5, 6, 7]
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w', 5, 6, 7]

在指定位置添加(插入)一个元素。: insert()

列表方法insert()可以在指定位置添加(插入)一个元素。

第一个参数指定位置,第二个参数指定要插入的元素。第一个(初始)位置是0;对于负值,-1是最后(最终)位置。

l = list(range(3))
print(l)
# [0, 1, 2]

l.insert(0, 100)
print(l)
# [100, 0, 1, 2]

l.insert(-1, 200)
print(l)
# [100, 0, 1, 200, 2]

和append()一样,列表被作为一个单独的元素加入。它不会被合并。

l.insert(0, [-1, -2, -3])
print(l)
# [[-1, -2, -3], 100, 0, 1, 200, 2]

请注意,insert()不是一个高效的操作,因为它需要以下成本。关于各种列表操作的计算复杂度,请参见官方维基上的以下页面。
O(n)

O(1)
标准库collection模块中提供了deque类型,作为一种以这种代价向上面添加元素的类型。例如,如果你想把数据当作一个队列(FIFO),使用deque会更有效率。

在指定位置添加(插入)另一个列表或元组: 一片

如果你用分片指定一个范围,并指定另一个列表或元组,所有的元素将被添加(插入)。

l = list(range(3))
print(l)
# [0, 1, 2]

l[1:1] = [100, 200, 300]
print(l)
# [0, 100, 200, 300, 1, 2]

你也可以替换原始元素。指定范围内的所有元素将被替换。

l = list(range(3))
print(l)
# [0, 1, 2]

l[1:2] = [100, 200, 300]
print(l)
# [0, 100, 200, 300, 2]