Die Liste tiefer sein kann, oder flacher, aber ich habe eine Liste der Tiefe 2 haben, wie folgt:Append Elemente eines willkürlich verschachtelt Liste in einer Tiefensuche-artige Weise ohne Rekursion
a = [['a','b'],['c','d'],['e','f']]
I wollen eine Funktion schreiben, f(a)
, so dass sie die folgende neue Liste zurückkehren würde:
['acef', 'adef', 'bcef', 'bdef']
ich imitiert Tiefensuche, wo die Listen Knoten sind im Wesentlichen. Ich möchte, dass die Funktion mit depth = n arbeitet, wobei n eine beliebige ganze Zahl ist. Was ist der pythischste Weg, dies zu erreichen?
Mein rekursiven Code lautet wie folgt:
def f(elems):
curr, *rest = elems
if not rest:
return ''.join(curr)
ret = [''.join(x + f(rest)) for x in curr]
return ret
Wie würde ich mich über diese iterativ zu lösen?
Ihr Ausgang ist keine gültige Python-Datenstruktur. Und warum sieht es so aus, als ob die Liste "['e],' f '' 'eine spezielle Behandlung erhält? Und verwenden Sie "Tiefe", um sich auf die Länge zu beziehen? – user2357112
Das sieht aus wie alle Kombinationen aus den Elementen außer dem letzten und verketten dann die Elemente des letzten. Nicht sicher, ob das, was du Algorithmus bist, völlig klar ist. (Aber wenn es wäre, hättest du wahrscheinlich die Lösung) – Anthon
@ user2357112 oh ich sehe was du meinst. Es ist ein modifiziertes DFS, so dass das letzte Element immer alle Elemente zusammenfügt. Ja Tiefe = Länge – ifma