有哪位找到问题是啥嘛?这 print 和 list 的答案为何不一样啊
这里唯一的可能性就是 每次append(func)他就append func 而不是func 的return
因为它每次list print出来的内容都是最后一个
但我也试过这样 也不行
zz = k.karel_status()
print(zz) # eg 【1,2】, 【2,2】
result.append(zz) #eg 【2,2】【2,2】
这里正常来说 zz 等于func 的return 啊
结果都一样
我无语
肯定一样啊。。。你的 s.k_pos 是个列表,通过 append 放进 result 里的是一个二维元组(return 的元组套列表),而这个元组中的 s.k_pos 列表每次都会被修改,所以虽然在过程中 print 的结果是不一样的,但是最后打印 result,看到的结果必定是一样的,因为都指向同一个 s.k_pos 列表(参考浅拷贝的知识点)。
解决办法也很简单,把 return 语句改成 return list(s.k_pos), s.k_facing 或者 return s.k_pos.copy(), s.k_facing,强制把 s.k_pos 复制一份。