2016-09-01 16 views
-2

我一直在學習使用python進行編程,並遇到了這個我一直在努力解決的問題。問題如下:Python,如何定義一個函數,其輸入是全局命名空間中的變量,它必須改變

編寫一個函數f(list,start,end),它以一個列表和兩個索引作爲參數,並修改參數列表,使其等於片段表達式列表的結果[start :結束]

我可以寫拼接列表正指數函數,即:

def f(this_list, start, end): 
    this_list=this_list[start:end+1] 

但我怎麼得到它的更新功能是指出,在全局命名空間中的任何名單?

所以,舉例來說,如果我再讓它運行:

x=[1, 2, 3, 4, 5] 
f(x, 2, 4) 
print x 

返回最初定義的X,而不是更新。所以這是因爲它只更新了函數名稱空間中的列表,是的?但是,我怎樣才能讓它在全球更新x?

+1

作業問題? –

+1

@bub當然這是 – byxor

+0

一個我在一組練習中發現的,但沒有評估作業 – leob

回答

0

正如評論已經提到一個人,你一定要讀Facts and myths about Python names and values

簡單的解決問題的方法是使一個新值並將其返回。 這將工作:

def f(this_list, start, end): 
    this_list=this_list[start:end+1] 
    return this_list 
+0

我剛剛閱讀過它,它有助於消除一些混淆。然而,是否可以在全局更新列表而不從函數返回任何內容?我知道在返回更新列表非常簡單時,這聽起來像是一件奇怪的事情,但僅僅出於興趣,有什麼辦法可以做到這一點? – leob

相關問題