python中append()與extend()方法的區別


兩個方法都是針對list的,不同的是輸入對象不同,如下:

my_list.append(object) # 輸入的是object
my_list.extend(iterable) # 輸入的是可迭代對象

一個典型的例子就是,對於append:

>>> my_list
['foo', 'bar']
>>> another_list = [1, 2, 3]
>>> my_list.append(another_list)
>>> my_list
['foo', 'bar', 'baz', [1, 2, 3]]

而對於extend:

>>> my_list
['foo', 'bar']
>>> another_list = [1, 2, 3]
>>> my_list.extend(another_list)
>>> my_list
['foo', 'bar', 1, 2, 3] # 此處顯然不同

更多的用法如下:

P = ['abc', 'jack']
P.extend('666')               # 可迭代對象:字符串
P.extend(['anna', 18])          # 可迭代對象:列表
P.extend({'alice': 19, 'even': 22}) # 可迭代對象:字典(默認key)
print("New list:", P)

輸出結果為:

New list: ['abc', 'jack', '6', '6', '6', 'anna', 18, 'alice', 'even']

append方法重寫也可能達到跟extend一樣的效果,

def append(alist, iterable):
    for item in iterable:
        alist.append(item)

def extend(alist, iterable):
    alist.extend(iterable)

但是性能要差好多,

import timeit

>>> min(timeit.repeat(lambda: append([], "abcdefghijklmnopqrstuvwxyz")))
2.867846965789795
>>> min(timeit.repeat(lambda: extend([], "abcdefghijklmnopqrstuvwxyz")))
0.8060121536254883


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM