我正在处理一个问题,它将nums,row,column作为参数,并返回一个大小为row x column的结果矩阵。
def matrixReshape(self, nums, r, c):
"""
:type nums: List[List[int]]
:type r: int
:type c: int
:rtype: List[List[int]]
"""
count = 0
i = j = 0
m = [[0]*c]*r
for row in nums:
for val in row:
if j < c and i < r:
print(val,m[i][j], i, j)
m[i][j] = val
print(val,m[i][j], i, j)
count += 1
j += 1
if j == c:
i += 1
j = 0
if count == (r*c):
return m
else:
return nums
当我测试输入如([[1,2],[3,4]],4,1)时,它生成输出[[4],[4],[4],[4]]而不是[[1],[2],[3],[4]]
答案 0 :(得分:0)
[0]*4
为您提供了相同对象的四个副本,而不是四个独立列表。
尝试
m = [[0 for i in range(c)] for j in range(r)]
答案 1 :(得分:0)
m = [[0]*c]*r
这将创建对同一内部列表的r
引用列表。因此,无论何时修改m[0]
,您还要修改m[1]
,依此类推,因为它们是相同的列表。
你可能想要这样的东西:
m = [[0 for _ in range(c)] for _ in range(r)]