This traverse generator function can be used to iterate over all values:
def traverse(o, tree_types=(list, tuple)): if isinstance(o, tree_types): for value in o: for subvalue in traverse(value, tree_types): yield subvalue else: yield o data = [(1,1,(1,1,(1,"1"))),(1,1,1),(1,),1,(1,(1,("1",)))] print list(traverse(data)) # prints [1, 1, 1, 1, 1, '1', 1, 1, 1, 1, 1, 1, 1, '1'] for value in traverse(data): print repr(value) # prints # 1 # 1 # 1 # 1 # 1 # '1' # 1 # 1 # 1 # 1 # 1 # 1 # 1 # '1'
source share