加法运算符(+)也可以实现列表增加元素的目的,但这个运算不属于原地操作,而是返回新列表,把并且涉及大量元素的复制,效率非常低。使用复合赋值运算符 += 实现列表元素追加时属于原地操作,与 append() 方法一样高效。
x = [1, 2, 3]
print(id(x), x)
x = x + [4] # 连接连个列表
print(id(x), x)
x += [5] # 为列表追加元素
print(id(x), x)
乘法运算符(*)可以用于列表和整数相乘,表示序列重复,返回新列表,从一定程度上来说也可以实现为列表增加元素的功能。与加法运算符(+)一样,该运算符也适用于元组和字符串。另外,运算符 *= 也可以用于列表元素重复,与运算符 += 一样属于原地操作。
x = [1, 2, 3, 4]
print(id(x), x)
x = x * 2 # 元素重复,返回新列表
print(id(x), x)
x *= 2 # 元素重复,原地进行
print(id(x), x) # 地址不变
print([1, 2, 3] * 0) # 重复0次,清空
成员测试运算符 in 可用于测试列表中是否包含某个元素,查询时间随着列表长度的增加而线性增加,而同样的操作对于集合而言是常数级的。
print(3 in [1, 2, 3], 3 in [1, 2, '3'])