python中append方法和extend方法的不同功能

版权声明:本版权归Strive Heisenberg所有。 https://blog.csdn.net/StriveHeisenberg/article/details/89577933

append()和extend()方法都是python中对列表操作比较常用的操作方法,先来看看python本身对这两种方法用法的解释,先定义一个列表,再用help函数帮忙查一下。

>>> a = []
>>> help(a.append)
Help on built-in function append:

append(object, /) method of builtins.list instance
    Append object to the end of the list.

>>> help(a.extend)
Help on built-in function extend:

extend(iterable, /) method of builtins.list instance
    Extend list by appending elements from the iterable.

可以看到,append()的括号里写的是object,目标元素,而extend()括号内可以加入iterable,可迭代的对象,可迭代的对象python中一般是指可以用for循环遍历的对象,如列表,元组,字典,集合等数据结构,都可以称之为可迭代的对象。
还要注意的就是在append或者extend的同一表达式中不可进行赋值的操作。就像这样:

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a.append(9)
>>> print(c)
None

append和extend就是独立使用的,特地为操作列表这种数据结构设计的,所以没有必要重新赋值。下面看看append和extend到底有什么不同功能。先用a、b两个列表测试一下:

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.append(9)
>>> a
[1, 2, 3, 9]
>>> a.append(b)
>>> a
[1, 2, 3, 9, [4, 5, 6]]
>>> b.extend(8)
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    b.extend(8)
TypeError: 'int' object is not iterable
>>> c = [0, 5, 6]
>>> b.extend(c)
>>> b
[4, 5, 6, 0, 5, 6]

append一般情况下都是后面附加上元素对象的,现在b也是一个列表,a.append(b)就是把b整个列表看成一整个元素对象,附加到a的后面,a列表中就包含1,2,3,9这些本身的元素和一个附加的列表元素,如果附加上别的东西,也有可能变成一个复合数据类型的列表。而extend先让列表b附加上一个不可迭代的元素对象数字8,则python报错。只有让b附加上一个可迭代的对象,列表c,列表c中的元素对象就全部附加到列表b的后面,变成一个长长的列表整体,这也就是说明extend具有头对尾连接两个列表的作用。
既然extend写了可迭代的对象,那么就应该包括元组,字典和集合等数据结构,元组的数据结构几乎跟列表的效果一毛一样。而列表内extend附加一个字典,则只会选取字典的键值进行附加到列表中的操作。列表内extend附加一个集合,则选取集合元素进行附加。小小注意一下集合extend附加有一个进栈和出栈的过程,所以附加在列表后面的顺序是不定的。

>>> c = [0, 5, 6]
>>> b.extend(c)
>>> b
[4, 5, 6, 0, 5, 6]
>>> d = {1:'one', 2:'two', 3:'three'}
>>> c.extend(d)
>>> c
[0, 5, 6, 1, 2, 3]
>>> f = {'four': 4, 'five': 5}
>>> c.extend(f)
>>> c
[0, 5, 6, 1, 2, 3, 'four', 'five']
>>> e = {3.14, 2.71, 'java'}
>>> c.extend(e)
>>> c
[0, 5, 6, 1, 2, 3, 'four', 'five', 'java', 2.71, 3.14]
>>> h = [0.1, 2.3, 6.2]
>>> e.extend(h)
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    e.extend(h)
AttributeError: 'set' object has no attribute 'extend'
>>> f.extend(h)
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    f.extend(h)
AttributeError: 'dict' object has no attribute 'extend'

嗯,基本就是这样,最后无论是append和extend的作用都是要在list对象后面使用的方法哦。

猜你喜欢

转载自blog.csdn.net/StriveHeisenberg/article/details/89577933
今日推荐