Tôi có một lớp đơn giản với một thuộc tính có thể chứa một danh sách các đối tượng của cùng một lớpPython Đệ quy qua các đồ vật và các đối tượng trẻ em, số sâu In con
class BoxItem:
def __init__(self, name, **kw):
self.name = name
self.boxItems = []
... #more attributes here
box1 = BoxItem('Normal Box')
box2 = BoxItem('Friendly Box')
box3 = BoxItem('Cool Box')
box4 = BoxItem('Big Box', [box1, box2]) #contains some children
example = BoxItem('Example Box', [box4,box3]) #contains another level of children
Làm việc với 'dụ' đối tượng hộp của chúng tôi, tôi muốn cơ động thông qua chiều sâu của tất cả trẻ em hộp có thể nó có thể có, và in ra các đối tượng được định dạng như sau:
1 Example Box
1.1 Big Box
1.1.1 Normal Box
1.1.2 Friendly Box
1.2 Cool Box
tabbing giữa là không cần thiết, chỉ muốn hiển thị các định dạng cây rõ ràng. Tôi có thể tự mình đi xuống các đối tượng và in ra các tiêu đề của họ, nhưng tôi không thể in ra các số trước cho thấy mối quan hệ cha/con. (1, 1.1, 1.2 ...)
Cảm ơn trước sự giúp đỡ của bạn :)
Sửa Dưới đây là những gì tôi đã làm việc với rất xa
def print_boxes(box_list):
node_count = 0
for box in box_list:
node_count += 1
print str(node_count)+' '+box.name #prints out the root box
recursive_search(box,node_count)
def recursive_search(box,node_count): #recursive automatically
level = 0
for child in box.boxItems:
level += 1
for x in range(len(child.boxItems)):
print x+1 #this prints out some proper numbers
print "level: "+str(level) #experiment with level
print child.name #prints out child box name
recursive_search(child,node_count) #runs the function again inside the function
Tôi thích mẹo đầu tiên của bạn bằng cách chuyển đổi hộp cục bộ thành danh sách. Ngoài ra, hàm Wrapped đọc tốt hơn rất nhiều so với hai hàm riêng biệt. Sẽ chỉnh sửa mã của tôi cho phù hợp và báo cáo lại –
Được giải thích và làm việc một cách hoàn hảo. Mã của bạn đã giáo dục tôi tốt, tôi thà được giáo dục hơn là có một câu trả lời mã hóa được ném vào tôi. Cảm ơn bạn –
@HackingLife: Thông thường tôi sẽ chỉ bình luận về ví dụ mã của bạn. Ban đầu mọi người đều muốn xem những gì bạn đã thử và nơi bạn đang mắc kẹt. Sau khi nhìn thấy những gì bạn đã viết, tôi chỉ quyết định bạn đã có khái niệm chính xác. Vui vì nó hoạt động cho bạn! – jdi