我試圖找到一種方式來打平我的列表,以便它輸出從遞歸函數拼合列表:在Python
['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
到目前爲止,我的遞歸函數返回值與匹配的密鑰的新嵌套列表字典(使用舊的參數列表和字典)如下:
l = ['won', 'too', 'three', 'fore', 'five', 'six', 'seven', 'ate', 'nein']
d = dict(won='one', too='two', fore='four', ate='eight', nein='nine')
def subst(l,d):
if len(l) == 1:
if l[0] in d:
return d[l[0]]
else:
return l[0]
else:
return [d[l[0]] if l[0] in d else l[0]] + [subst(l[1:],d)]
到目前爲止,我已經得到:
['one', ['two', ['three', ['four', ['five', ['six', ['seven', ['eight', 'nine']]]]]]]]
有什麼辦法可以在保持函數的遞歸完整性的同時將列表平坦化?
如果我在遞歸subst()'調用周圍省略'[]',我會得到一個TypeError:只能連接列表(而不是「str」)到列表。 – user2559679
@ user2559679:因爲你的代碼並不總是返回一個列表...修復它 –
@Karoly Horvath Eureka!謝謝!函數中的break/base大小寫返回一個字符串。只需用一些'[]'修復它。 – user2559679