1. 程式人生 > >python遞迴搜尋

python遞迴搜尋

rs.py


# Recursive module
class Recursive:
	def __is_list(self, obj):
		if type(obj) == type([]):
			return True
		else:
			return False

	def search(self, parentElement, callback, index=-1):
		temp_index = index
		for childElement in parentElement:
			index = temp_index
			if not self.__is_list(childElement):
				callback(index, childElement)
			else:
				index += 1
				self.search(childElement, callback, index)


test.py

from rs import Recursive
list = [
	[
		"Apple",
		[
			"California",
			"Computer",
			"Product List",
			[
				"iPhone",
				[
					"iPhone 3",
					"iPhone 4",
					"iPhone 4S",
					"iPhone 5",
					"iPhone 5s",
					"iPhone 6"
				],
				"iPad",
				"iMac",
				"iTouch"
			]
		]
	],
	[
		"Lenovo",
		[
			"Beijing",
			"Laptop"
		]
	]
]
# Callback(element_index, leaf_node)
def callbackFunc(i, leafNode):
	white_space = ''
	for ws in range(0, i):
		white_space += '    '
	print white_space, leafNode


rc = Recursive() # search(recursive_element, callback_function)
rc.search(list, callbackFunc)