2010-03-16 152 views
2

我正在嘗試使用Python對列表進行遞歸(例如[True,[[True,False],[False,[False,True]]]])。我知道列表長度將始終爲2,兩個值都是布爾值。我想取這些值並將它們替換回列表中,直到只剩下2個值(或1個布爾值)。任何幫助將非常感激。遞歸列表

+2

你想如何組合這些值?這是功課嗎? – 2010-03-16 21:01:55

回答

4

你還沒有說過如何結合這兩部分,所以我假設or,但你可以改用另一個函數。

l = [True, [[True, False], [False, [False, True]]]] 

def foo(x): 
    if isinstance(x, list): 
     return foo(x[0]) or foo(x[1]) 
    else: 
     return x 

print foo(l) 
+0

完美,謝謝! – Russell 2010-03-16 21:11:42

0

說你的列表是l

def print_list(list): 
    t = type(list()) 
    for item in list: 
     if type(item) is t: 
     print_list(item) 
     else: 
     print item 
print_list(l) 

一些簡單的像會在你的名單打印每一個項目。

+1

'type(list())'拼寫爲''list'「。 – 2010-03-16 21:33:45

+0

是真的。爲新人拼寫出來。 – 2010-03-17 00:48:07

+0

嗯,不完全拼寫的列表,因爲在這種情況下,Jweede是陰影內置列表。所以除非傳遞的參數恰好可以被調用,否則你將會得到的是一個例外。我建議不要使用list作爲你函數的參數;) – 2010-03-17 01:02:55