트리 구조 :목록, 튜플 및 문자열로 구성된이 트리를 "걷는"방법은 무엇입니까?
[('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
은에 구문 분석 한 반복 처리/이송/나무가 포맷 도보 수있는 방법
[('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
확인. 코드가 작동하지 않습니다. 나는 그것을 붙일 것이다. 그러나 그것은 아무데도 가까이 있지 않다. 내가 여기에서 달성하고자하는 것은 형식이 지정된 트리 (변수 목록)를 탐색하는 것입니다. – Firebowl2000
그냥 털어 내지 말고 [mcve]로 자르십시오. 그것은 * "아무데도 가까이"*, 당신은 아마 너무 아직 그 질문에 대한 준비가되지 않습니다. – jonrsharpe