列表的+、+=、append、extend
程序员文章站
2024-01-06 14:03:04
...
一、+的用法
python里,‘+’用于连接同类型的数据。
下面的代码定义了列表a和c、元组b。
a = [1,2,3]
b = (4,5,6)
c = ['s','f']
d = a + b
e = a + c
当我们执行d=a+b时,因为a和b不是同一类型数据,因此会产生以下错误,由此可以看出,‘+’只能用于连接同一类型的数据。
d = a + b
TypeError: can only concatenate list (not "tuple") to list
当我们执行e = a + c时,执行程序后,e的值为[1,2,3,'s','f']。
同时,执行下面的代码发现程序输出[1,2,3,'s', 'f']。也就是a+c本身是有返回值的,返回的是连接的结果。
print(a+c)
小结:python中‘+’只能用于连接同一类型的数据,以上述代码连接两个列表为例,执行的操作是迭代处理c中的元素,将其中的元素添加到e中。
二、+=的用法
程序代码如下:
a = [1,2,3]
b = (4,5,6)
c = ['s','f']
a += b
# a += c
# a += 5
执行a+=b后,a的值变为[1,2,3,4,5,6];;执行a+=c后,a的值变为[1,2,3,'s','f'];而执行a+=5后,程序报错如下:
a+=5
TypeError: 'int' object is not iterable
我们发现,+=可以连接列表和元组,但是不能连接列表和int,原因在于列表和元组在python中都是可迭代对象,因此执行a+=b时,实际上是将遍历b中的元素,将它们添加到a中。
三、append的用法
源码为 List.append(self, object):Append object to the end of the list。
一切皆对象,传入的参数只要是一个对象就可以,数字、元组、字典、甚至是函数……都可以。
a = [1,2,3]
a.append(4)
a.append([5])
a.append((78,9))
a.append('str')
print(a) # [1, 2, 3, 4, [5], (78, 9), 'str', {'name': 'jack', 'age': 40}]
print(a.append(8)) # None
小结:可以看出,对于列表a而言,
1、不管val是什么数据类型,执行a.append(val)后,都是将val作为一个列表的元素添加到列表最后;
2、a.append(val)本身是没有返回值的,注意和‘+’的区别
四、extend的用法
源码为List.extend(self, iterable),即extend的对象必须是可以迭代的。
a = [1,2,3]
a.extend([4,5,6])
a.extend((7,8,9))
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a.extend([0,1])) # None