首页 > 其他 > 详细

8.4 传递列表

时间:2021-01-18 14:31:10      阅读:29      评论:0      收藏:0      [点我收藏+]

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

def greet_users(names):
    """向列表中的每一位用户发出问候"""

    for name in names:
        msg="hello,"+name.title()+"!"
        print("\n"+msg)

usernames=["tom","margot","jone"]
greet_users(usernames)


运行结果:
>>> 
===================== RESTART: D:/python学习/第8章 函数/8.4.py =====================

hello,Tom!

hello,Margot!

hello,Jone!
>>> 

 8.4.在函数中修改列表

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

#首先创建一个列表,其中包含一些要打印的设计
unprinted_designs=["iphone case","robot 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)



运行结果:

>>> 
==================== RESTART: D:/python学习/第8章 函数/8.4.1.py ====================
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(unprint_designs,completed_models):

    """
    #模拟打印每个设计,直到没有未打印的设计为止
    #打印每个设计后,都将其移到列表completed_models中

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

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



    
运行结果:

>>> 
=================== RESTART: D:/python学习/第8章 函数/8.4.1l.py ===================
Printing model:dodecahedron
Printing model:robot pendant
Printing model:iphone case

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

 8.4.2 禁止函数修改列表

有的时候需要禁止函数修改列表。如上例即便打印所有设计后,仍要保留原来的设计列表,以供备案。为解决这个问题,可向函数传递列表的副本而不是原件。

要将列表的副本传递给函数,可以用切片法[:]创建列表的副本。

function_name(list_name[:])

以上程序如果不想清空未打印的设计列表,可以像下面这样调用print_models():
print_models(unprinted_designs[:],completed_models)

def print_models(unprinted_designs,completed_models):

    """
    #模拟打印每个设计,直到没有未打印的设计为止
    #打印每个设计后,都将其移到列表completed_models中

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

        
#模拟根据设计制作3D打印模型的过程
        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=[]


#要保留原来的设计列表,可以用切片法[:]创建列表的副本如:unprinted_designs[:]
print_models(unprinted_designs[:],completed_models)
show_completed_models(completed_models)


#验证一下:unprinted_designs列表不变
print("\n")

print(unprinted_designs)
    

运行结果:

>>>
================= RESTART: C:/Users/admin/Desktop/8.4.1ll.py =================
Printing model:dodecahedron
Printing model:robot pendant
Printing model:iphone case

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


[‘iphone case‘, ‘robot pendant‘, ‘dodecahedron‘]
>>>

 

8.4 传递列表

原文:https://www.cnblogs.com/ylzchs/p/14290644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!