首页 > 解决方案 > 从平面列表创建列表列表

问题描述

我知道如何将列表列表转换为平面列表。例如,

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

有没有可能换一种方式?在这种情况下,对于给定的平面列表,是否可以使列表列表包含三个元素?我想看到这样的输出

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

对于给定的输入[1, 2, 3, 4, 5, 6, 7, 8, 9]

标签: pythonpython-3.xlistnumpynumpy-ndarray

解决方案


只需切片:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [a[i:i+3] for i in range(0, len(a), 3)]

print(b)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

或者,如果您真的想像标签所暗示的那样使用 numpy,请reshape()按照上面的建议使用


推荐阅读