在 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]