如何更改我的代碼以在更改後返回LLL?遞歸和工廠問題
我有一個列表:
LLL = [12,[3,[5],[6,[[7, [],8], []]]], [8, [0,87,23,434,444,33]]]
,我調用這個函數:
def testQ1():
dolist_deep_add1 = factory_dolist_deep_A((lambda x: x + 1))
print ('dolist_deep_add1(LLL) : ', dolist_deep_add1(LLL))
這個功能應該更改後返回列表。 結果林瓦亭爲:
LLL = [13,[4,[6],[7,[[8, [],9], []]]], [9, [1,88,24,435,445,34]]]
factory_dolist_deep_A代碼:
def factory_dolist_wide_A(fa):
def print_wide (L):
def pw1(x):
if type(x) is int:
x = fa(x)
print(str(x)+' ', end='')
def pwstart (L, lvl):
print('\nlevel ' + str(lvl) + " : " , end='')
pw (L, lvl)
def pw (L, lvl):
if not L: return
Q = []
for a in L:
if type(a) is list:
if a == [] : pw1('[]')
else: Q.extend(a)
else:
pw1(a)
pwstart(Q , lvl + 1)
return pwstart(L, 0)
return print_wide
現在它只是得到的數字,並打印出來,而不改變列表本身。
我想更改factory_dolist_wide_A(fa)
:以便它將返回一個更改的列表。
它應該像這個打印功能一樣工作,而不僅僅是打印更改,還可以對列表本身進行更改。
你的問題很不清楚。 「改變後返回L」是什麼意思? – mgilson
我的意思是,這裏它只是打印,我想返回更改列表,而不僅僅是打印更改... –
這很清楚他想要什麼。當前打印列表的函數使用傳入的函數進行更改。他希望這些函數也返回已更改的列表。 –