Better ideas or ways to approach?

  • Context: Python 
  • Thread starter Thread starter ChrisVer
  • Start date Start date
  • Tags Tags
    Approach Ideas
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 1K views
Messages
3,372
Reaction score
465
I was trying to finish the assignments of this link
https://ocw.mit.edu/courses/electri...ce-fall-2010/assignments/MIT6_034F10_lab0.pdf

unfortunately they are not numbered, but I dealt with the Tree reference one. In particular, given a tree TREE and a list of indices, it will return the appropriate subtree. My python code looks like this:
Python:
def depth(x):
    if not isinstance(x,(list,tuple)): return 0
    maxdep=0
    for element in x:
        maxdep = max( maxdep , depth(element) )
    return maxdep+1

def tree_ref( tree, index):
    #Error if you ask for a deeper subtree than available
    if len(index)>depth(tree):
        return "ERROR \t tree_ref(): Your tree is smaller than what you asked"
    #main return
    if len(index)==1: return tree[index[0]]
    for i in range(len(index)):
        return tree_ref(tree[index[i]], index[i+1:])

TREE=(((1, 2), 3), (4, (5, 6)), 7, (8, 9, 10))
print  tree_ref(TREE, (1,1,1))
As far as I've checked this code seems to work...Are there more clear or even optimal ways to do the job? thanks.
 
Physics news on Phys.org
ChrisVer said:
Python:
    for i in range(len(index)):
        return tree_ref(tree[index[i]], index[i+1:])
This structure seems a little odd - I think it's equivalent to
Python:
return tree_ref(tree[index[0]],index[1:])
Also, you've used a recursive approach. I'd probably use a loop-based approach, since I expect it would handle larger trees without falling over.