第三章 使用列表

1.1 列表用 append 和 extend 添加元素的用法和区别

1、extend() 主要是 列表(list) 的方法,用来把另一个可迭代对象中的元素逐个追加到列表末 尾。

语法
list.extend(iterable)

iterable:可迭代对象,如列表、元组、字符串、集合、字典、range、生成器等。

原地修改列表。

返回值是 None。

2、和 append 的区别
append() 把整个对象当作一个元素添加:

a = [1, 2]
a.append([3, 4])
print(a) # [1, 2, [3, 4]]

3、extend() 会把可迭代对象拆开,逐个添加:

a = [1, 2]
a.extend([3, 4])
print(a) # [1, 2, 3, 4]

4、添加字符串时的注意点
a = []
a.extend(“abc”)
print(a) # [‘a’, ‘b’, ‘c’]
因为字符串也是可迭代对象,会被拆成字符。

5、如果你想把整个字符串作为一个元素,应该用 append():
a = []
a.append(“abc”)
print(a) # [‘abc’]

6、添加字典时
a = []
a.extend({“name”: “Tom”, “age”: 18})
print(a) # [‘name’, ‘age’]
默认添加的是字典的 键,不是键值对。

7、和 +、+= 的区别
a = [1, 2]
b = [3, 4]

c = a + b
print(c) # [1, 2, 3, 4]
print(a) # [1, 2],a 没变

a = [1, 2]
b = [3, 4]

a += b
print(a) # [1, 2, 3, 4]
a += b 通常等价于 a.extend(b),也是原地修改。

8、extend() 返回 None,不要这样写:

a = [1, 2]
a = a.extend([3, 4])
print(a) # None

正确写法:

a = [1, 2]
a.extend([3, 4])
print(a) # [1, 2, 3, 4]

如果传入不可迭代对象,会报错:

a = [1, 2]
a.extend(3) # TypeError: ‘int’ object is not iterable