列表操作符

列表可以使用 比较运算符,但比较运算符对数据通用,单独用一个知识点讲解。该知识点介绍有列表自己特性的操作符 +*

操作符 +

操作符 +,可以让两个列表元素顺序不变地合并到一个新的列表中:

list_1 = [1,2]
list_2 = [3,4]
list_1 + list_2, list_2 + list_1
([1, 2, 3, 4], [3, 4, 1, 2])

操作符 + 还可以与赋值操作符 = 连用,将一个列表中的元素,加到另一个列表中(相当于 list.extend()),而不创建一个新列表:

list_1 = [1,2]
list_2 = [3,4]
print(id(list_1))
list_1 += list_2
id(list_1), list_1
2893532728008


(2893532728008, [1, 2, 3, 4])

操作符 *

操作符 *,可以将列表中的元素重复 n 次,得到一个新列表:

list_1 = [1,2]
list_2 = list_1*2
print(id(list_1),id(list_2))
list_2
2893532600136 2893532727432


[1, 2, 1, 2]

**注意:**如果列表中有可变对象,重复 n 次后,可变对象是同一个对象的多次引用,改变一个,都会跟着改变。

list_1 = [[0]]
list_2 = list_1*3
print(list_2)
list_1[0][0] = 1
list_2
[[0], [0], [0]]


[[1], [1], [1]]

操作符 *,还可以与赋值操作符 = 连用,用一个列表的元素重复 n 次来扩充它自身,而不创建新列表:

_list = [1,2]
print(id(_list))
_list *= 2
id(_list), _list
2893532727624


(2893532727624, [1, 2, 1, 2])

当 n 小于 1 时,则得到空列表:

[1,2,3]*0
[]

列表是可迭代对象,* 可以将列表拆包:

print(*[1,2,3])
1 2 3