次の問題があります。
まず、次のようなタプルのリストがあります。
[(1,2),(2,3),(4,5),(5,6),(5,7),(5,8),(6,9),(6,10),(7,11),(12,14)]
簡単にするために、各タプルの最初の数値が 2 番目の数値を「制御」するとしましょう (依存関係の解析に慣れている人にとっては、最初の数値はヘッドのインデックスを表し、2 番目の数値は依存のインデックスを表します)。
今私が作成したいのは、引数として anint
と上記のリストを取る関数です。この関数は、最初の数値として整数引数を持ち、2 番目の数値を返すすべてのタプルを探す必要があります。次に、関数はこれらの 2 番目の数値をそれぞれ再帰的に取得し、最初の数値として表示されるタプルを調べて、2 番目の数値を返す必要があります。これは、他の 2 番目の番号を取得できなくなるまで続行する必要があります。
よりよく説明するために例を使用します。この関数が入力として数値 5 を受け取るとしましょう。最初の数値として 5 を持つタプルは次のとおり(5,6),(5,7),(5,8)
です。最初の結果として、関数は 6,7,8 を取り、それを a に追加する必要がありますlist
。ここで、関数は 6,7,8 を考慮し、最初の数字 ( ) として現れるタプルを探し(6,9),(6,10),(7,11)
、2 番目の数字 (9,10,11) を返す必要があります。8 はどのタプルにも最初の数として表示されないため、その旅はこの段階で終了します。返される最終的なリストは[6,7,8,9,10,11]
.
私はそのようなことを試しましたが、うまくいきません:
def foo(start_index, lista_tuples,list_to_return=list()):
indeces=[x[1] for x in lista_tuples if x[0]==start_index]
list_to_return.extend(indeces)
for index in indeces:
foo(index,lista_tuples,list_to_return)
return list_to_return
しかし、うまくいきません。誰かが私を助けることができますか?