我有一个 list_of_lists,我想创建一个包含所有内部列表的所有元素的列表。我不明白为什么不能使用 sum 来实现这一点。
list_of_lists = [['element 1','element 2'],['element 1']]
print(sum(list_of_lists))
>> TypeError: unsupported operand type(s) for +: 'int' and 'list'
如果我使用 reduce 它工作正常:
from functools import reduce
print(reduce(lambda x,y: x+y, list_of_lists))
>> ['element 1', 'element 2', 'element 1']
请您参考如下方法:
因为 sum 使用默认值 0 进行初始化。改为使用空列表进行初始化:
print(sum(list_of_lists, []))
# ['element 1', 'element 2', 'element 1']
但是,使用sum 来展平列表并不是一个好主意(可怕的 性能),您可以使用嵌套理解或itertools.chain.from_iterable这是为此创建的。
