PYTHON函数(4)传递列表

将列表传递给函数后,函数就能直接访问其内容

def greet_users(names):
    """向列表中的每一位用户都发出简单的问候"""
    for name in names:
        msg="Hello, "+name.title()+"!"
        print(msg)

usernames=['hannah','ty','margot']
greet_users(usernames)

这个函数问候列表中的每一个人

Hello, Hannah!
Hello, Ty!
Hello, Margot!

1、在函数中修改列表

将列表传递给函数之后,函数就可以对其进行修改。在函数中对这个列表所做的任何修改都是永久性的,这让你能够高效的处理大量数据

#首先创建一个列表,其中包含一些要打印的设计
unprinted_designs=['iphone case','robot pendant','dodecahedron']
completed_models=[]

#模拟打印每个设计,直到没有未打印的设计为止
#  打印每个设计后,都将其转移到列表completed_models中
while unprinted_designs:
    current_design=unprinted_designs.pop()

    #模拟根据设计制作打印模型的过程
    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)

结果

Printing model: dodecahedron
Printing model: robot pendant
Printing model: iphone case

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

为了重新组织这些代码,我们可以编写两个函数,每个都做一件具体的工作。大部分代码都于原来相同,只是效率更高。第一个函数负责处理打印设计的工作。第二个函数将概述打印了那些设计

def print_models(unprined_designs,completed_models):
    """
    模拟打印每个设计,知道没有打印未打印的设计为止
    打印每个设计后,都将其移到列表completed_models中

    """
    while unprinted_designs:
        current_design=unprinted_designs.pop()

        #模拟根据设计制作打印模型的过程
        print("Printing model: "+current_design)
        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)

2、禁止函数修改列表

要将列表的副本传递给函数,可以像下面这样做:

function_name(list_name[:])

切片法[:]表示创建列表的副本,在上面的例子中,如果不想清空未打印的设计列表,可像下面这样调用print_models():

print_models(unprined_designs[:],completed_models)

这样函数print_models()依然能够完成其工作,因为它获得了所有未打印的设计名称,但它使用的是列表unprinted_design的副本,而不是列表unprinted_design本身。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值