如何将列表转换为列表列表?

How to convert a list into list of lists?

我有一个号码列表:

L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

我找到了创建列表列表的方法:

new_L = [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]]

但这不是我需要的。我需要创建 (x) 次 (y) 列表列表。例如,作为 3 乘以 4 的列表列表:

new_L_2 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

或者一个 2*6 的列表列表:

new_L_3 = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]

我怎样才能做到?提前致谢。

您可以将列表理解与 range 结合使用以获得 x 个元素。例如你想要 4 个元素使用

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
out = [l[i: i+4] for i in range(0, len(l), 4)]

print(out)
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
x = 3
y = 4

newList = []

for i in range(x):
    newList.append([L[t+(i*y)] for t in range(y)])

print(newList)

想想如果你把它画在纸上,你会如何分解它。

您需要创建一个循环访问数字列表的函数。有很多方法可以做到这一点,但我想到的方法如下。

创建一个函数,它接受一个输入列表和一个整数 (X),表示每个子列表中的项目数。遍历列表中的每个项目并将其添加到临时列表中。如果列表项的索引可以被X整除,则将临时列表追加到列表列表中,清空临时列表,重新开始。