1. 程式人生 > 其它 >函式3傳遞列表-python進階篇三

函式3傳遞列表-python進階篇三

  假設有一個使用者列表,我們要問候其中的每位使用者。下面的示例將一個名字列表傳遞給一個名為greet_users() 的函式,這個函式問候列表中的每個人:

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!
'''

  在函式中修改列表

# 首先建立一個列表,其中包含一些要列印的設計
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)

  對上面的案例進行改進,我們可編寫兩個函式,每個都做一件具體的工作。大部分程式碼都與原來相同,只是效率更高。第一個函式將負責處理列印設計的工作,而第二個將概述列印了哪些設計:

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 = [] print_models(unprinted_designs, completed_models) show_completed_models(completed_models)

  修改但要保留原列表。你可能會做出這樣的決定:即便列印所有設計後,也要保留原來的未列印的設計列表,以供備案。但由於你將所有的設計都移出了unprinted_designs ,這個列表變成了空的,原來的列表沒有了。為解決這個問題,可向函式傳遞列表的副本而不是原件;這樣函式所做的任何修改都隻影響副本,而絲毫不影響原件。

  可以通過列表複製,也就是列表切片的方法:

function_name(list_name[:])

print_models(unprinted_designs[:], completed_models)