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)