2014-10-17 94 views
-2

所以我只編寫了幾個星期,今天我正忙着在python中編寫一個填充空列表的算法。我寫了這個:爲什麼執行該功能後,此列表不能「保存」?

def wth (a,b): 

    list=[] 
    i = 0 
    j = b 
    while len(list)<a: 
     list.insert(i,j) 
     i=i+1 
     j=j+1 
    return list 

它的工作原理,如:

wth(10,10) 

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

但是,如果我當時想保持這個名單,並做一些事情吧,它只是返回一個空列表:

print list 

[] 

這是爲什麼?提前謝謝了。

+0

這是一個函數嗎?以及你在哪裏和如何打電話給你的名單? – Kasramvd 2014-10-17 18:59:40

+1

'如果我想保留這個列表並做一些事情,它只是返回一個空的列表:' - 你能解釋一下嗎? – thefourtheye 2014-10-17 19:03:37

+0

這似乎是一個巧合,'list'是在函數'wth'之外定義的,它的值是一個空列表。 – chepner 2014-10-17 19:04:21

回答

3

如果你想用一個函數的結果,你需要將其分配給一個變量,像這樣

new_list = wth(a, b) 
print new_list 

,而不是所有這些代碼,你可以簡單地使用,range功能千方百計想讓你想要,像這樣

def wth(a, b): 
    return range(b, b + a) 
+0

@Robᵩ我想我現在理解他的問題。請檢查更新後的答案 – thefourtheye 2014-10-17 19:08:26

1

在你的例子中,「list」是函數範圍內的一個變量。當函數終止時,「list」指向的對象將返回給調用者,但「list」變量本身會與本地函數上下文中的所有變量一起銷燬。

事實證明,「list」是內置的名稱,所以當您稍後嘗試打印它時,應該得到"<type 'list'>"。在你的例子中,我假設你已經創建了一個叫做「list」的全局變量。

它通常不明智地使用內置類型或函數作爲變量名稱(列表,字典,地圖等),因爲您掩蓋了以後可能要使用的對象,並且通常會混淆每個人。