Python中如何将列表各操作步骤的状态存储到二维列表?
如何将列表的历次操作状态存储到二维列表中
这事儿其实很好解决,核心思路就是用一个二维列表来记录每次操作后的path状态,但要注意一个关键点:必须存储列表的副本,而不是直接存原列表的引用(不然后续修改path时,之前的历史记录也会跟着变,就乱套了)。
下面直接给你对应的Python实现步骤,完全贴合你的需求:
步骤1:初始化基础变量
先创建原始的path列表,再初始化一个空的二维列表path_history用来存所有状态:
# 初始化原始路径列表 path = [2, 1, 3, 0] # 初始化存储历史状态的二维列表 path_history = []
步骤2:保存初始状态
先把最开始的path状态存进去,这里要用path.copy()或者list(path)来创建副本:
# 保存初始状态 path_history.append(path.copy())
步骤3:依次执行操作并保存状态
按照你的操作顺序,每执行一次操作后,就把当前path的副本存入path_history:
# 第一次执行path.pop(),然后保存状态 path.pop() path_history.append(path.copy()) # 第二次执行path.pop(),然后保存状态 path.pop() path_history.append(path.copy()) # 执行path.append(9),然后保存状态 path.append(9) path_history.append(path.copy()) # 执行path.append(5),然后保存状态 path.append(5) path_history.append(path.copy())
验证结果
现在你打印path_history,就能得到所有操作的状态记录了:
print(path_history) # 输出结果:[[2, 1, 3, 0], [2, 1, 3], [2, 1], [2, 1, 9], [2, 1, 9, 5]]
为什么要用copy()?
因为Python里的列表是可变对象,如果直接path_history.append(path),其实是把原列表的内存地址存进了二维列表。后续修改path时,所有历史条目都会指向同一个列表,导致之前的记录被覆盖。用copy()就能创建一个独立的新列表,保证每个历史状态都是固定不变的。
内容的提问来源于stack exchange,提问作者sphoenix
相关产品推荐
相关产品推荐

