variable tree structure
- nestedList1 variable
aa3
|
aa1 aa2 bb1
\ / /
aa bb
\ /
root
- nestedList2 variable
bb4
|
aa3 bb2 bb3
| \ /
aa1 aa2 bb1 cc1
\ / / |
aa bb cc
\ | /
root
このようなネストされたリストを取得するにはどうすればよいですか?
nestedList1 = ['root', ['aa', ['aa1', ['aa3'], 'aa2'], 'bb', ['bb1']]]
nestedList2 = ['root', ['aa', ['aa1', ['aa3'], 'aa2'], 'bb', ['bb1', ['bb2', ['bb4'], 'bb3']], 'cc', ['cc1']]]
def ConvertTraverse(nlist, depth=0):
convertlist = []
for leaf in nlist:
if isinstance(leaf, list):
tmplist = ConvertTraverse(leaf, depth+1)
convertlist.insert(0, tmplist)
else:
convertlist += [leaf]
return convertlist
print ConvertTraverse(nestedList1)
print ConvertTraverse(nestedList2)
- 結果
nestedList1:[[['bb1'], [['aa3'], 'aa1', 'aa2'], 'aa', 'bb'], 'root']
nestedList2:[[['cc1'], [[['bb4'], 'bb2', 'bb3'], 'bb1'], [['aa3'], 'aa1', 'aa2'], 'aa', 'bb', 'cc'], 'root']
私が欲しいのは、以下の結果です。
- 結果
nestedList1:[[[['aa3'], 'aa1', 'aa2'], 'aa', ['bb1'], 'bb'], 'root']
nestedList2:[[[['aa3'], 'aa1', 'aa2'], 'aa', [[['bb4'], 'bb2', 'bb3'], 'bb1'], 'bb', ['cc1'], 'cc'], 'root']
にはどうすれば、このようなネストされたリストを得るのですか? ネストされたリストを必要とし、トラスト順の順序で注文します。
それぞれの枝が括弧で囲まれているといいでしょう。つまり、 'nestedList1 = ['root'、['aa '、['aa1'、['aa3 ']]、['aa2']]、[ 'bb'、['bb1']]] '次に、最初の項目を最後まで再帰的に移動できます。しかし、最も深い切断枝で確実にしたい場合は、もう少し操作が必要です。 ' – Aguy