将列表转换为多维列表

时间:2018-02-22 09:04:21

标签: python

我有一个包含100个项目的列表。如何将其转换为20 * 5二维列表?我的代码:

ng test

2 个答案:

答案 0 :(得分:0)

一些嵌套循环应该可以解决这个问题:

result = []
for i in range(m):
    row = []
    for j in range(n):
        row.append(l[i * n + j])

    result.append(row)

答案 1 :(得分:0)

l = [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4]
n = 5

使用列表理解

subLists = [l[i:i+n] for i in range(0, len(l), n)]

使用生成器

def make_sublists_generator(l, sublists_size):
    for i in range(0, len(l), sublists_size):
        yield l[i : i + sublists_size]

subLists = list(make_sublists_generator(l, n)) 

两者都输出相同的

print(str(subLists))

[[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]]

注意

如果列表的大小不是n,它仍然有效,最后一个子列表会更短。如果要引发异常,您可能需要在len(l)%sublists_size函数的开头检查make_sublists