我有一个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'
Run Code Online (Sandbox Code Playgroud)
如果我使用reduce它效果很好:
from functools import reduce
print(reduce(lambda x,y: x+y, list_of_lists))
>> ['element 1', 'element 2', 'element 1']
Run Code Online (Sandbox Code Playgroud)
因为sum使用默认值 0 进行初始化。改为使用空列表进行初始化:
print(sum(list_of_lists, []))
# ['element 1', 'element 2', 'element 1']
Run Code Online (Sandbox Code Playgroud)
sum然而,用(可怕的性能)来展平列表并不是一个好主意,您可以使用嵌套理解或itertools.chain.from_iterable为此创建的理解。
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |