为什么扩展python列表

时间:2012-01-08 05:15:55

标签: python list merge append extend

为什么在使用+ =运算符时使用extend?哪种方法最好? 另外,将多个列表合并到一个列表中的最佳方法是什么

#my prefered way
_list=[1,2,3]
_list+=[4,5,6]
print _list
#[1, 2, 3, 4, 5, 6]

#why use extend:
_list=[1,2,3]
_list.extend([4,5,6])
print _list
#[1, 2, 3, 4, 5, 6]



_lists=[range(3*i,3*i+3) for i in range(3)]
#[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

#my prefered way of merging lists
print sum(_lists,[])
#[0, 1, 2, 3, 4, 5, 6, 7, 8]


#is there a better way?
from itertools import chain
print list(chain(*_lists))
#[0, 1, 2, 3, 4, 5, 6, 7, 8]

2 个答案:

答案 0 :(得分:16)

+=只能用于通过另一个列表扩展一个列表,而extend可用于通过一个可迭代对象扩展一个列表

e.g。

你可以做到

a = [1,2,3]
a.extend(set([4,5,6]))

但你做不到

a = [1,2,3]
a += set([4,5,6])

关于第二个问题

[item for sublist in l for item in sublist] is faster.

请参阅Making a flat list out of list of lists in Python

答案 1 :(得分:1)

你可以extend()一个带有非列表对象的python列表作为迭代器。迭代器不存储任何值,而是一个迭代一些值的对象。有关迭代器here的更多信息。

在这个线程中,有一些例子,迭代器被用作extend()方法的参数:append vs. extend