0

再帰関数を使用して、迷路を通る流路を作成しています。関数は正しいパスのタプル (行、列) を返しますが、タプルのリストの形式で必要です。たとえば、このフォームを作成する必要があります

[(0,0),(1,1),(2,2),(3,3),(4,3)]

ただし、関数はこれを返します。

[(0, 0), [(1, 1), [(2, 2), [(3, 3), (4, 3)]]]]

関数は次のとおりです。

def FlowPathAt(fdir,row,col):
    lItem = FlowOut(fdir,row,col)
    if not lItem:
        return (row,col)
    else:
        r,c = lItem
        return [(row,col) ,  FlowPathAt(fdir,r,c)]

FlowOut(fdir,row,col)(row,col) から始まる次のセル アドレスを返す関数です。

ビルド中にこのリストを平坦化する方法はありますか?

類似:タプルのリストを pythonic リストにフラット化する方法

4

2 に答える 2

6

Try this:

def FlowPathAt(fdir,row,col):
    lItem = FlowOut(fdir,row,col)
    if not lItem:
        return [(row,col)] # More convenient base case
    else:
        r,c = lItem
        return [(row,col)] + FlowPathAt(fdir,r,c) # Append list to list instead of nesting

(This always returns a list of tuples, too, which just seems like a better idea than sometimes returning a list and sometimes returning a single tuple. If that's not acceptable, you'll need to do some post-processing.)

于 2013-04-13T23:46:43.267 に答える