zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    2013=730 胆子要大,敢想敢做
    2013=7=30 自增量的浅谈
    2013=7=29 nyist 13题
    2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
    2013=7=22
    2013=7=23 超级阶梯
    机器人写诗项目——递归神经网络(RNN)
    和程序员在一起是怎样的体验
    和程序员在一起是怎样的体验
    人工智能数学基础——线性代数
  • 原文地址:https://www.cnblogs.com/thsk/p/8404425.html
Copyright © 2011-2022 走看看