「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

extend函数使用详解

  • 1、可以接收的参数
    • 1.1、添加字符串
    • 1.2、添加元组
    • 1.3、添加字典
  • 2、原理解析
  • 3、extend() 和 append()、+ 的区别?
  • 4、特殊的添加方式

extend() 可以在列表末尾「添加」另一个「序列」中的值。

语法

list.extend( iterable )

参数

  • iterable :需要添加的元素列表

返回值

  • 没有返回值,只是修改原来的列表

实例:向列表中添加另一个列表

list1 = [1, 2, 3]list2 = [4, 5, 6]list1.extend(list2)print(list1)

输出:

[1, 2, 3, 4, 5, 6]

1、可以接收的参数

extend() 接收的参数类型是「可迭代对象」,任何具有_iter_()_getitem_()方法的对象都是可迭代对象,Python内了很多可迭代对象,常见的有 list,str,tuple,dict。

1.1、添加字符串

extend() 可以添加「字符串」类型的数据,字符串的每一个「字符」,都被当做一个新「元素」

list1 = [1, 2, 3]str1 = 'abc'list1.extend(str1)print(list1)

输出:

[1, 2, 3, 'a', 'b', 'c']

1.2、添加元组

extend() 可以添加「元组」类型的数据,和添加列表类似,每个「元素」都被当做一个新元素。

list1 = [1, 2, 3]tuple1 = (4, 5, 6)list1.extend(tuple1)print(list1)

输出:

[1, 2, 3, 4, 5, 6]

1.3、添加字典

extend() 可以添加「字典」类型的数据,只添加键,每一个「键」都被当做一个新「元素」

list1 = [1, 2, 3]dict1 = {'key1': 1, 'key2': 2}list1.extend(dict1)print(list1)

输出:

[1, 2, 3, 'key1', 'key2']

2、原理解析

extend() 只是将元素追加在列表「末尾」,本质上是 “修改” 而不是 “增加”,不会创建新的列表。

我们打印添加前、后的内存地址可以发现,「内存地址」没有变,还是原来的那个列表。

list1 = [1, 2, 3]list2 = [4, 5, 6]print(id(list1))list1.extend(list2)print(id(list1))

输出:

19305665089281930566508928

extend() 在添加其他类型时,会先转换成 list,再添加元素,类似下面这样:

list1 = [1, 2, 3]str1 = 'abc'list2 = list(str1)print(list2)list1.extend(list2)print(list1)

输出:

['a', 'b', 'c'][1, 2, 3, 'a', 'b', 'c']

3、extend() 和 append()、+ 的区别?

以添加列表为例

extend() 添加列表,是将列表中的「每个元素」都当做一个新元素,添加到原来的列表中

list1 = [1, 2, 3]list2 = [4, 5, 6]list1.extend(list2)print(list1)

输出:

[1, 2, 3, 4, 5, 6]

append() 添加列表,是将「>整个列表」当做一个新元素,添加到原来的列表中

list1 = [1, 2, 3]list2 = [4, 5, 6]list1.append(list2)print(list1)

输出:

[1, 2, 3, [4, 5, 6]]

+「拼接」元素,并创建一个新的列表存放,内存地址会改变

list1 = [1, 2, 3]list2 = [4, 5, 6]print(id(list1))print(id(list2))print(id(list1 + list2))

输出:

268087637644826808763765762680878544128

+= 的效果跟 extend() 一样,每个元素都被当做一个新元素,并且不会改变内存

list1 = [1, 2, 3]list2 = [4, 5, 6]print(id(list1))list1 += list2print(list1)print(id(list1))

输出:

2150265921856[1, 2, 3, 4, 5, 6]2150265921856

4、特殊的添加方式

配合算术「运算符」添加列表

list1 = [1, 2, 3]list2 = [4, 5, 6]list1.extend(list2 * 2)print(list1)list1.extend(list1 + list2)print(list1)

输出:

[1, 2, 3, 4, 5, 6, 4, 5, 6][1, 2, 3, 4, 5, 6, 4, 5, 6, 1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6]

「索引」取值添加列表

list1 = [1, 2, 3]list2 = [4, 5, 6]list1.extend(list2[1:2])print(list1)

输出:

[1, 2, 3, 5]