2013-06-26 21 views
0

我需要在遞歸函數中分配列表的幫助。當遞歸函數在迭代中時,如何爲列表中的成員分配一個值給列表中的成員?在Python中遞歸函數期間分配列表

+0

你需要把它作爲函數的參數 – matino

+0

你需要像我們做的,例如,Haskell的?你的問題你能更清楚嗎?我不認爲遞歸在Python中很流行(特別是當我們談論列表時)。 –

回答

0

,而使用它來驅動迭代你不能改變一個可迭代的,但你可以很容易地使一個迭代來保存你的結果,並把它傳遞給遞歸函數作爲參數:

results = [] 

def recurse(level, results): 
    level += 1 
    results.append(level) 
    if level < 10: recurse(level, results) 

print recurse(0, results) 
>>> [1,2,3,4,5,6,7,8,9,10] 

但在這個例子中,你可以

for item in results: 
    recurse (item, results) 
0

我不知道如果我理解得你的問題,但我認爲這是這樣的:

# put "s" on 2nd position of the list ['l', 'u', 'c', 'a', 's'] 
# so the result should be ['l', 's', 'c', 'a', 's'] 

如果是這樣,請記住,有更好的方法來在Python中完成它。因此,這裏的代碼:

def assign_in_position(elem, my_list, pos): 
    first = my_list[0] 
    tail = my_list[1:] 

    if pos == 0: 
     return [elem] + tail 

    return [first] + assign_in_position(elem, tail, pos-1) 

如果您在Python是新的,只有一個東西,可奇怪的是(切片,my_list[1:])。這個功能也是一種越野車,但它是建議性的。它適用於我的第一個示例,但如果您正在學習遞歸,那麼您應該學習如何檢測和解決常見的遞歸問題。

出於好奇,這是爲同一任務的Haskell代碼:

assign_in_pos elem [] _ = [elem] 
assign_in_pos elem (_:t) 0 = elem:t 
assign_in_pos elem (h:t) pos = h:assign_in_pos elem t (pos-1)