1. 程式人生 > >【Python】向函數傳遞列表

【Python】向函數傳遞列表

urn span () 修改列 定義 been 過程 bottom 怎麽辦

向函數傳遞列表

在實際使用中你會發現,向函數傳遞列表是比較實用的,這種列表可能包含名字、數字、可能更復雜的對象(字典)

假設向一個函數傳遞一堆水果,我們說出我們喜歡所有的水果

def Obj(fruits):
    for fruit in fruits:
        msg = I like +fruit+!
        print(msg)

L = [apple,orange]
Obj(L)

我們將Obj定義成接受一個水果種類列表,並將其存儲在形參Obj中,這個函數遍歷接受到的列表,然後打印‘I like ..!‘

在函數中修改列表

#首先定義一個列表,其中包含要打印的字母
letters = [A,B,C,D] already_letter = [] #模擬閱讀每個字母,直到字母讀取完畢為止 #將每個已經閱讀過的字母轉移到列表already_letter中 while letters: current_letter = letters.pop() print("Printing letter:"+current_letter) already_letter.append(current_letter) #顯示已經讀取的所有字母 print("\nThe follwing letter has been read:
") for letter in already_letter: print(letter)

我們首先需要創建一個列表,還創建一個名為already_letter的空列表,每個已經閱讀過的字母都存儲到這個列表中,只要列表中還有字母,while循環就模擬閱讀過程:從該列表中刪除一個已經讀取的字母,然後將其存儲到變量current_letter中,並顯示一條消息,再將該字母存儲到新列表中,等到循環結束後,再打印出所有的字母。

上述程序改編版

def read_letter(letters,already_letter):
    """
    讀取每個字母,直到讀取完畢為止
    將讀取完畢後的字母存儲到新的列表中
    :param letters:
    :param already_letter:
    :return:
    
""" while letters: current_letter = letters.pop() #模擬讀取字母的過程 print("Printing letter:" + current_letter) already_letter.append(current_letter) def show_already_letter(already_letter): """ 顯示已經閱讀的所有字母 :param already_letter: :return: """ print("\nThe follwing letters has been read:") for letter in already_letter: print(letter) letters = [A,B,C,D] already_letter=[] read_letter(letters,already_letter) show_already_letter(already_letter)

我們定義了函數read_letter(),它包含2個形參:一個需要閱讀字母的列表和一個存儲已經閱讀字母的列表。給定這兩個列表,這個函數模擬閱讀過程:將字母一個個閱讀,然後打印,最後將其轉存到存儲已閱讀的列表中,函數show_already_letter()主要是打印已經閱讀字母列表,最後四條語句是定義一個列表與一個空列表,調用上面的兩個函數。

總結

上面的函數中,在讀取完畢之後,letters列表就編程空列表了,那麽假如我們想在讀取完列表後還保留該列表,該怎麽辦呢?

使用切片法[ : ]創建列表的副本

def read_letter(letters,already_letter):
    """
    讀取每個字母,直到讀取完畢為止
    將讀取完畢後的字母存儲到新的列表中
    :param letters:
    :param already_letter:
    :return:
    """
    while letters:
        current_letter = letters.pop()

        #模擬讀取字母的過程
        print("Printing letter:" + current_letter)
        already_letter.append(current_letter)
def show_already_letter(already_letter):
    """
    顯示已經閱讀的所有字母
    :param already_letter:
    :return:
    """
    print("\nThe follwing letters has been read:")
    for letter in already_letter:
        print(letter)


letters = [A,B,C,D]
already_letter=[]

read_letter(letters[:],already_letter)
show_already_letter(already_letter)

print(letters)
通過這段代碼的打印結果可以看出,列表已經被復制了哦!

【Python】向函數傳遞列表