Python中防止列表被修改,数据没有备份

mac2026-06-07  6

​ #创建一个列表,其中包含一些要打印的设计 unprinted_designs = ['iphone case', 'root pendant', 'dodecahedron'] completed_models = [] #模拟打印每个设计,直到没有打印的为止,打印每个设计之后,都将其移动到completed_models列表中 while unprinted_designs: current_design = unprinted_designs.pop() #模拟3d打印的过程 print("Printing model: " + current_design) completed_models.append(current_design) #显示打印的所有模型 print("\nThe following models have been printed: ") for completed_model in completed_models: print(completed_model) ​

 

这样将unprinted_designs列表中的数据pop出来之后,导致原来的数据没有备份

所以如果为了防止原始数据被破坏可以将操作列表的工作函数化之后,传入的参数是列表的副本——即列表的切片

print_models(unprinted_designs[:], completed_models)

#列表的切片 def print_models(unprinted_designs,completed_models): print('\n') while unprinted_designs: current_design = unprinted_designs.pop() print("Printing model: " + current_design) completed_models.append(current_design) def show_completed(completed_models): print("\nThe following models have been printed:") for model in completed_models: print(model) unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron'] completed_models = [] #传入原始数据 # show_completed(completed_models) # print_models(unprinted_designs,completed_models) # show_completed(completed_models) # print(unprinted_designs) #传入列表的切片 print_models(unprinted_designs[:], completed_models) show_completed(completed_models) print(unprinted_designs)

 

最新回复(0)