-1
列表可以更深或更淺,但說我有深度2的列表如下:追加的任意嵌套列表的元素在深度優先搜索式的方式,無需遞歸
a = [['a','b'],['c','d'],['e','f']]
我想編寫一個函數,f(a)
,這樣它會返回以下新的列表:
['acef', 'adef', 'bcef', 'bdef']
從本質上講,我模仿深度優先搜索,其中列表是節點。我希望函數能夠在depth = n的情況下工作,其中n是任意整數。什麼是達到這個最pythonic方式?
我的遞歸代碼如下:
def f(elems):
curr, *rest = elems
if not rest:
return ''.join(curr)
ret = [''.join(x + f(rest)) for x in curr]
return ret
我怎麼會去反覆地解決這個?
你的輸出不是一個有效的Python數據結構。另外,它爲什麼看起來像'['e','f']'列表正在得到特殊待遇?你用「深度」來指代長度嗎? – user2357112
看起來像除了最後一個元素之外的所有組合,然後連接最後一個元素。不知道你算法是否完全清楚。 (但如果是這樣,你可能會有解決方案) – Anthon
@ user2357112哦,我明白你的意思了。它是一個修改過的DFS,因此最後一個元素總是將所有元素連接起來。是depth = length – ifma