序列的 +、+= 和 extend 的区别¶
这三种方式,都可以把 list 进行连接
区别一: + 和 += 占用空间不一样¶
a = [1,2,3]
b = [4,5,6]
c = a + b
print("a: ", a)
print("c: ", c) # c是产生的新的list
a += b
print("a: ", a) # a还是原来那个list
#----------------------------------
a: [1, 2, 3]
c: [1, 2, 3, 4, 5, 6]
a: [1, 2, 3, 4, 5, 6]
区别二: + 两边的数据类型要一致¶
a = [1,2,3]
b = (4,5,6)
a += b
print("a: ", a) # 正常执行
#----------------------------------
a: [1, 2, 3, 4, 5, 6]
c = a + b
print("c: ", c) # 错误退出
#----------------------------------
# TypeError: can only concatenate list (not "tuple") to list
原因是因为 += 是调用MutableSequence
中的__iadd__
魔法方法, 它是调用extend
, 接收一个iterable
并通过for循环append.