ツリー構造:リスト、タプル、文字列からなるこのツリーを「歩く」方法は?
[('T',
[('A1', ['B1', ('B2', ['D1'])]),
('A2', ['C1', 'C2', ('C3', [('E1', ['F1']), ('E2', ['G1', 'G2'])])])])]
か(同じもの):
T
|__A1
| |__B1
| |__B2
| |__D1
|__A2
|__C1
|__C2
|__C3
|__E1
|__F1
E2
|__G1
|__G2
がに解析される
1反復/トラバース/でフォーマットされたツリーを歩くことができる方法[('T',
[('A1',
[
'B1',
('B2', ['D1'])
]
),
('A2',
[
'C1',
'C2',
('C3',
[
('E1', ['F1']),
('E2', ['G1', 'G2'])
]
)
]
)
]
)]
こちらです?私はこれがむしろ特定の問題であることを知っていますが、私は本当にこの時点で固執しています。
T A1 B1
T A1 B2 D1
T A2 C1
T A2 C2
T A2 C3 E1 F1
T A2 C3 E2 G1
T A2 C3 E2 G2
コードどこにもありません:これは(:文字列のリストタイプは重要ではありませんが、たとえばことができる)のように期待される目標は、出力にルートから各エンドノードへのすべての可能なルートであります作業に近いが、それは一般的な傾き表示されることがあります。
formatted_tree = [('T',[('A1', ['B1', ('B2', ['D1'])]),('A2', ['C1', 'C2', ('C3', [('E1', ['F1']), ('E2', ['G1', 'G2'])])])])]
def walk(n):
if isinstance(n, basestring):
yield n # end-branches
else:
if isinstance(n, tuple): # root,[bra,nch,es]
yield n[0]
walk(n[1])
elif isinstance(n, list): # LIST=branches (can be tuples or string)
for branch in n:
walk(branch)
[path for path in walk(formatted_tree)]
あなたのコードはどこにありますか?その問題は正確には何ですか? – jonrsharpe
OK。コードが機能していません。私はそれを貼り付けますが、それはどこにもありません。私がここで達成しようとしているのは、フォーマットされたツリー(リスト変数)をトラバースすることです。 – Firebowl2000
ダンプインするだけではなく、[mcve]に切り落としてください。それが*「どこにも近づかない」*の場合、おそらくまだSOの質問の準備が整っていないでしょう。 – jonrsharpe