在函数中修改列表或禁止修改列表(code 练习) | Python

一、修改列表

注意: 将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的。

Code:

def print_models(unprinted_designs, completed_models):
	"""
	模拟打印每个设计,直到没有未打印的设计为止
	打印每个设计后,都将其移到列表completed_models中
	"""
	while unprinted_designs:
		# 在一次迭代取出unprinted列表中最后的一个值
		current_design = unprinted_designs.pop()

		# 模拟根据设计制作3D打印模型的过程
		print("Printing model: " + current_design)
		# 将从unprinted列表取的值增添至completed列表中
		completed_models.append(current_design)

def show_completed_models(completed_models):
	"""显示打印好的所有模型"""
	print("\nThe following models have been printed:")
	for completed_model in completed_models:
		print(completed_model)

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []

print_models(unprinted_designs, completed_models)
show_completed_models(completed_models)
Printing model: dodecahedron
Printing model: robot pendant
Printing model: iphone case 

The following models have been printed:
dodecahedron
robot pendant
iphone case

二、禁止修改列表

以上面的code为例:
问题: 如何保留原来未打印的设计列表,即保留unprinted_designs列表的值?
解决: 向函数print_models传递列表的副本,而不是原件。

# 切片表示法[:]创建列表的副本
print_models(unprinted_design[:], copleted_models)

虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否则还是应该将原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从而提高效率,在处理大型列表时尤其如此。

参考资料:
《Python Crash Course》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值