Python extend 和 append 的區別

來源:互聯網
上載者:User

標籤:test   遞迴   iterable   演算法   rabl   error:   last   元素   class   

在python中,關於list添加元素的操作有兩個方法,即extend和append。但兩者的用法還是存在一些區別:

1.append可以添加單個元素,也可以添加可迭代對象,但是extend只能添加可迭代對象:

arr = [1,2,3,4]In [155]:arr.append(5)In [156]:arrOut[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_apOut[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_exOut[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 aIn [164]:c = testF1([3,2,5,1])cendOut[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 aIn [166]:c = testF1([3,2,5,1])cendOut[166]:[3, 2, 5, 1]

 

Python extend 和 append 的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.