这样将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)
