標籤:extend append
關於append和extend兩個方法,網上很多人說法如下:
append() 方法向列表的尾部添加一個新的元素。只接受一個參數。
extend()方法只接受一個列表作為參數,並將該參數的每個元素都添加到原有的列表中。
但是,關於extend只接受一個列表作為參數這種說法,深表懷疑。舉個栗子:
extend>>>a= [1,2,3,4]>>> a.extend([‘a‘,‘b‘])>>> a[1, 2, 3, 4, ‘a‘, ‘b‘]append>>> a.append([‘a‘,‘b‘])>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘]]
ok,這樣我們追加了一個列表是沒有問題的,換個元組可以嗎?
append>>> a.append((1,2,3))>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3)]>>> a.extend((4,5,6))>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6]
依然可以,元組也可以被extend接受,並且成功追加到list中,換字典呢?
extend>>> a.extend({1:‘a‘,2:‘b‘})>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2]append>>> a.append({7:‘c‘,5:‘d‘})>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2, {5: ‘d‘, 7: ‘c‘}]
這裡我們可以發現些許不同,extend的方式擴充列表參數為字典時,被追加到列表中的只有key,value並沒有被追加進去;但是使用append這種方式擴充時,將整個字典作為一個值追加到列表中了
ok,以上是可變對象,如果我們換成字串呢?
extend>>> a.extend(‘123456‘)>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2, {5: ‘d‘, 7: ‘c‘}, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘]append>>> a.append(‘123456‘)>>> a[1, 2, 3, 4, ‘a‘, ‘b‘, [‘a‘, ‘b‘], (1, 2, 3), 4, 5, 6, 1, 2, {5: ‘d‘, 7: ‘c‘}, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘123456‘]
也是可以的。
總結:
1、append和extend都可以接受各種類型資料,但是extend參數為字典時,只會追加key到列表中。
2、append和extend都只接受一個參數
3、append接受一個參數,追加到列表中在尾部只添加一個元素,也就是說你參數是什麼,列表中就追加成什麼。
4、extend接受一個參數,追加到列表中時是將參數中的每一個值都追加到列表中(字典例外)
附加help資訊
Help on built-in function extend:
extend(...) method of builtins.list instance
L.extend(iterable) -> None -- extend list by appending elements from the iterable
並沒有說extend的參數必須是列表。
從可迭代的元素追加延長列表
以上純屬個人實驗結果,如有大神有更好的解釋,請多多解答,謝謝!
本文出自 “風之別鶴” 部落格,謝絕轉載!
也談python列表append和extend的區別