假设我有一个包含9个项目的列表, 我想将其转换为3个3项的列表
来自[1,2,3,4,5,6,7,8,9] - > [[1,2,3],[4,5,6],[7,8,9]]
这是代码:
def main():
L = range(1,10)
twoD= [[0]*3]*3 #creates [[0,0,0],[0,0,0],[0,0,0]]
c = 0
for i in range(3):
for j in range(3):
twoD[i][j] = L[c]
c+=1
因某种原因返回
twoD = [[7, 8, 9], [7, 8, 9], [7, 8, 9]]
我不知道为什么,这是做什么的呢?
答案 0 :(得分:0)
您可以使用以下列表理解。
>>> l = [1,2,3,4,5,6,7,8,9]
>>> [l[i:i+3] for i in range(0, len(l), 3)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
更一般地说,你可以编写这样一个函数
def reshape(l, d):
return [l[i:i+d] for i in range(0, len(l), d)]
>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> reshape(l,3)
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]]
>>> reshape(l,5)
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]