Python的list方法append和extend有什麼區別?

這篇文章是 社區維基 。 編輯現有答案以改善此職位。 它當前不接受新的答案。

列表方法append()extend()什麼區別? python


#1樓

如下兩個片斷在語義上是等效的: app

for item in iterator:
    a_list.append(item)

函數

a_list.extend(iterator)

當循環在C中實現時,後者可能會更快。 spa


#2樓

extend()能夠與迭代器參數一塊兒使用。 這是一個例子。 您但願經過如下方式從列表列表中列出一個列表: code

對象

list2d = [[1,2,3],[4,5,6], [7], [8,9]]

你要 element

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

您可使用itertools.chain.from_iterable()進行操做。 該方法的輸出是一個迭代器。 它的實現等效於 get

def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

回到咱們的例子,咱們能夠作 博客

import itertools
list2d = [[1,2,3],[4,5,6], [7], [8,9]]
merged = list(itertools.chain.from_iterable(list2d))

並得到通緝名單。 it

這是等效地extend()與迭代器參數一塊兒使用的方式:

merged = []
merged.extend(itertools.chain.from_iterable(list2d))
print(merged)
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]

#3樓

append(object) -經過將對象添加到列表來更新列表。

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]]

extend(list) -本質上是串聯兩個列表。

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

#4樓

您可使用「 +」返回擴展名,而不是就地擴展名。

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略有不一樣。 +=appendextend的最大區別之一是在函數範圍內使用它時,請參閱此博客文章


#5樓

append()方法將單個項目添加到列表的末尾。

x = [1, 2, 3]
x.append([4, 5])
x.append('abc')
print(x)
# gives you
[1, 2, 3, [4, 5], 'abc']

extend()方法採用一個參數,一個列表,並將該參數的每一個項目附加到原始列表中。 (列表做爲類實現。「建立」列表其實是在實例化一個類。所以,列表具備對其進行操做的方法。)

x = [1, 2, 3]
x.extend([4, 5])
x.extend('abc')
print(x)
# gives you
[1, 2, 3, 4, 5, 'a', 'b', 'c']

潛入Python

相關文章
相關標籤/搜索