varList = []
var =[[1,1],[1,2],[1,3]]
var0= [[1,1],[1,2],[1,3]]
#建立绘图函数makeShape
def makeShape(var,var0):
for i in range(1,28):
for j in range(1,28):
if not([i,j] in var0) and ([i+1,j] in var0 or [i-1,j] in var0 or [i,j+1] in var0 or [i,j-1] in var0):
var.append([i,j])
varList.append(var)
print(varList)
var.pop()
return varList
makeShape(var,var0)
print(varList)
这个循环里print的最后一次varlist和最后return出来的varlist为什么不一样?显然return出来的是错误的不是预期的,而循环内print的是正确的。第一次问,有劳了
你好,return出来的和最终打印出来的是一致的,循环中打印出来不一致是print在pop函数之前导致;
因为你内层的打印print函数位置没有放正确, print(varList) 应该放在var.pop()代码行的下面,输出结果才会一致。
pop()的原因:
varList = []
var =[[1,1],[1,2],[1,3]]
var0= [[1,1],[1,2],[1,3]]
#建立绘图函数makeShape
def makeShape(var,var0):
for i in range(1,28):
for j in range(1,28):
if not([i,j] in var0) and ([i+1,j] in var0 or [i-1,j] in var0 or [i,j+1] in var0 or [i,j-1] in var0):
var.append([i,j])
varList.append(var)
var.pop()
print('In::',varList)
#var.pop()
return varList
makeShape(var,var0)
print('Out:',varList)
#输出:
In:: [[[1, 1], [1, 2], [1, 3]]]
In:: [[[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]]]
In:: [[[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]]]
In:: [[[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]]]
Out: [[[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]], [[1, 1], [1, 2], [1, 3]]]