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
Làm thế nào để có được một danh sách lồng nhau?
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)
- kết quả
nestedList1:[[['bb1'], [['aa3'], 'aa1', 'aa2'], 'aa', 'bb'], 'root']
nestedList2:[[['cc1'], [[['bb4'], 'bb2', 'bb3'], 'bb1'], [['aa3'], 'aa1', 'aa2'], 'aa', 'bb', 'cc'], 'root']
Tất cả tôi muốn là kết quả dưới đây.
- kết quả
nestedList1:[[[['aa3'], 'aa1', 'aa2'], 'aa', ['bb1'], 'bb'], 'root']
nestedList2:[[[['aa3'], 'aa1', 'aa2'], 'aa', [[['bb4'], 'bb2', 'bb3'], 'bb1'], 'bb', ['cc1'], 'cc'], 'root']
Làm thế nào để có được một danh sách lồng nhau như vậy? Tôi muốn một danh sách lồng nhau, được đặt hàng để duyệt qua theo thứ tự.
Có thể sẽ tốt hơn nếu mỗi nhánh sẽ được encaplsulated trong ngoặc đơn nghĩa là 'nestedList1 = ['root', ['aa', ['aa1', ['aa3']], ['aa2']], [ 'bb', ['bb1']]] 'Sau đó, bạn có thể đệ quy di chuyển mục đầu tiên đến cùng. Tuy nhiên, nếu bạn muốn chắc chắn với nhánh cắt sâu nhất thì cần phải thao tác nhiều hơn. ' – Aguy