有的時候, 我們希望會保留列表中的數據作為備份,又不希望函數中不修改列表的值,該怎么做?python中提供了一種方法,將列表的副本傳遞給
專注于為中小企業提供網站建設、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業晉州免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了超過千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
函數,這樣函數修改的只是列表的副本, 不會修改原列表的內容,可以按照下面這樣做:
function_name(list_name[:])
切片表示法[:]創建列表副本.
如下面程序: 我們可以 給print_models 方法傳遞 unprinted_designs[:],這樣原列表?unprinted_designs值的就不會被修改
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("\n The following mdels 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)
"""
使用global子句。在stisfiesF函數中,聲明L為一個全局變量,如此
你在該函數中修改L的值,則會體現到函數之外。這種寫法違背Python
優雅的原則,不推薦使用,僅供學習.【L中的元素不能有數字,否則
報錯,我也不知什么原因】
"""
def?f(s):
return?'av'?in?s
#?在聲明L為全局變量之前定義,代碼更直觀
L?=?['av1',?'av',?'a','b','ac','love','python',('f','av','gh'),[1,2,3]]
#?此處函數不傳入參數L
def?satisfiesF():
#?聲明L為全局變量
global?L
x?=?[]
for?i?in?L:
if?f(i):?????
x.append(i)
else:
pass
L?=?x
return?len(L)
print?('新列表L的長度為%s'%satisfiesF())
print?('將原列表修改為元素含有"av"的新列表L:')
print(L)
"""
結果:新列表L的長度為3
將原列表修改為元素含有"av"的新列表L:
['av1',?'av',?('f',?'av',?'gh')]
"""
t_list=['m1','m2','m3']def show_maagicians(L): for i in t_list: print(i) return show_maagicians(t_list) def make_great(L): for i in range(len(L)): L[i]='the Great '+L[i] return make_great(t_list)show_maagicians(t_list)
網站名稱:python修改函數列表 python列表元素
文章轉載:http://vcdvsql.cn/article24/hpghje.html
成都網站建設公司_創新互聯,為您提供網站制作、網站改版、標簽優化、品牌網站制作、響應式網站、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯