列表方法append()
和extend()
什麼區別? python
如下兩個片斷在語義上是等效的: app
for item in iterator: a_list.append(item)
和 函數
a_list.extend(iterator)
當循環在C中實現時,後者可能會更快。 spa
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]
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]
您可使用「 +」返回擴展名,而不是就地擴展名。
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]
相似地, +=
用於就地行爲,但與append
和extend
略有不一樣。 +=
與append
和extend
的最大區別之一是在函數範圍內使用它時,請參閱此博客文章 。
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 。