Python extend 和 append 的区别

Posted Don*Quixote

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python extend 和 append 的区别相关的知识,希望对你有一定的参考价值。

在python中,关于list添加元素的操作有两个方法,即extend和append。但两者的用法还是存在一些区别:

1.append可以添加单个元素,也可以添加可迭代对象,但是extend只能添加可迭代对象:

arr = [1,2,3,4]
In [155]:

arr.append(5)
In [156]:

arr
Out[156]:
[1, 2, 3, 4, 5]
In [157]:

arr_1 = [1,2,3,4]
In [158]:

arr_1.extend(5)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-158-a5e15af180e0> in <module>()
----> 1 arr_1.extend(5)

TypeError: int object is not iterable

2.在添加可迭代对象是,append在添加后不改变添加项的类型,添加之前是什么类型,添加之后就是什么类型;而extend在添加后,会将添加项进行迭代,迭代的元素挨个添加到被添加的数组中:

arr_ap = [1,2,3,4]
item = [5,6,7]
arr_ap.append(item)
In [160]:

arr_ap
Out[160]:
[1, 2, 3, 4, [5, 6, 7]]
In [161]:

arr_ex = [1,2,3,4]
item = [5,6,7]
arr_ex.extend(item)
In [162]:

arr_ex
Out[162]:
[1, 2, 3, 4, 5, 6, 7]

用一个更具体的栗子,使用递归迭代置换一个数组,使用同样的算法,变的只是添加元素的时候,分别用append和extend,大家应该可以从打印的结果看出明显的区别了:

使用append:

def testF1(n):
    a = []
    i = 0
    val = n[i]
    del n[i]
    a.append(val)
    if len(n) != 0:
        i + 1
        a.append(testF1(n))
    else: print(end)
        
    return a
In [164]:

c = testF1([3,2,5,1])
c
end
Out[164]:
[3, [2, [5, [1]]]]

使用extend:

def testF1(n):
    a = []
    i = 0
    val = n[i]
    del n[i]
    a.append(val)
    if len(n) != 0:
        i + 1
        a.extend(testF1(n))
    else: print(end)
        
    return a
In [166]:

c = testF1([3,2,5,1])
c
end
Out[166]:
[3, 2, 5, 1]

 

以上是关于Python extend 和 append 的区别的主要内容,如果未能解决你的问题,请参考以下文章

python list的extend和append方法

python中append()和extend()的对比

python=============python中的append() 和 extend()

python-列表的append()和extend()

也谈python列表append和extend的区别

python中List append()extend()和insert()的区别