Python中append和extend列表方法的區別



Answers

append將一個元素添加到列表中, extend第一個列表與另一個列表(或另一個可迭代的,不一定是列表)連接起來。

>>> li = ['a', 'b', 'mpilgrim', 'z', 'example']
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']

>>> li.append("new")               
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']

>>> li.insert(2, "new")            
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']

>>> li.extend(["two", "elements"]) 
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

潛入Python

Question

列表方法append()extend()之間有什麼區別?




這相當於使用+運算符進行appendextend

>>> x = [1,2,3]
>>> x
[1, 2, 3]
>>> x = x + [4,5,6] # Extend
>>> x
[1, 2, 3, 4, 5, 6]
>>> x = x + [[7,8]] # Append
>>> x
[1, 2, 3, 4, 5, 6, [7, 8]]



你可以使用“+”來返回擴展,而不是擴展。

l1=range(10)

l1+[11]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11]

l2=range(10,1,-1)

l1+l2

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2]

類似地+=就地行為,但與appendextend略有不同。 += from appendextend的最大區別之一是在函數作用域中使用它時,請參閱此博客文章




追加(對象) - 通過將對象添加到列表來更新列表。

x = [20]
# list passed to the append(object) method is treated as a single object.
x.append([21,22,23]) 
#hence the resultant list length will be 2
print x 
--> [20, [21,22,23]]

擴展(列表) - 基本連接2個列表。

x = [20]
#the parameter passed to extend(list) method is treated as a list.
#eventually it is 2 list's being concatenated. 
x.extend([21,22,23])
#here the resultant list's length is 4
print x 
[20,21,22,23]



“append”方法將其參數作為單個元素添加到列表中,而“extend”則獲取列表並添加其內容。

例如,

延伸

    letters = ['a', 'b']  
    letters.extend(['c', 'd'])   
    print(letters)   # ['a', 'b', 'c', 'd']

附加

    letters.append(['e', 'f'])   
    print(letters)    # ['a', 'b', 'c', 'd', ['e', 'f']]



append追加單個元素。 extend附加元素列表。

請注意,如果您傳遞一個列表來追加,它仍會添加一個元素:

>>> a = [1, 2, 3]
>>> a.append([4, 5, 6])
>>> a
[1, 2, 3, [4, 5, 6]]



extend(L)通過附加給定列表L中的所有項目來擴展列表。

 >>> a
[1, 2, 3]
a.extend([4]) # it is equivalent to a[len(a):] = [4] or a.append(4)
 >>>a
[1, 2, 3, 4]
 >>> a = [1
 >>> a
[1, 2, 3]
 >>> a[len(a)] = [4]
 >>> a
[1, 2, 3, 4]



英文字典定義單詞appendextend為:

追加 :將(某物)添加到書面文檔的末尾。
擴大 :做大。 放大或擴大

有了這些知識,現在讓我們理解

1) appendextend區別

append

  • 任何Python對象按原樣附加到列表的末尾(即作為列表中的最後一個元素)。
  • 結果列表可以嵌套並包含異構元素(即列表,字符串,元組,字典,集合等)

extend

  • 接受任何迭代作為它的參數並使列表變大
  • 結果列表總是一維列表(即沒有嵌套),它可能包含異構元素(如字符,整數,浮點數)作為應用list(iterable)的結果list(iterable)

2) appendextend之間的相似性

  • 兩者只需要一個參數
  • 在原地修改列表
  • 因此,兩者都返回None

lis = [1, 2, 3]

# extend is equivalent to this
lis = lis + list(iterable)

# append simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
lis.append(object)



一個有趣的暗示,但沒有解釋的一點是,擴展比追加更快。 對於任何具​​有附加內容的循環,都應該被認為是由list.extend(processed_elements)取代。

請記住,增加新元素可能會導致整個列表在內存中更好的位置。 如果這是多次完成的,因為我們一次追加1個元素,整體性能會受到影響。 在這個意義上,list.extend類似於“”.join(stringlist)。




追加會一次添加整個數據。 整個數據將被添加到新創建的索引中。 另一方面,正如名稱所示,擴展當前數組。

例如

list1 = [123, 456, 678]
list2 = [111, 222]

隨著append我們得到:

result = [123, 456, 678, [111, 222]]

extend我們得到:

result = [123, 456, 678, 111, 222]



Links