Is there a Python module that already does this?

Emile van Sebille emile at fenx.com
Wed Feb 6 20:03:02 CET 2002


 "David Eppstein"
> Isn't all that list-copying (ary[1:]) going to make for a very
inefficient
> algorithm?

OK... this compares in timing to yours and doesn't depend on recursion
depth or generators:

def flatten(ary):
    try:
        if ary[0] == ary:rslt.append(ary)
        else:
            flatten(ary[0])
            flatten(ary[1:])
    except:
        if ary: rslt.append(ary)

rslt = []
flatten(("cat",5,['dog',[3,3,1]],"zoo"))
print '\n\n',rslt

I knew it was a stinker when I posted it, but I liked the deceiving
simplicity of the code.  ;-)

Apologies to all...

--

Emile van Sebille
emile at fenx.com

---------




More information about the Python-list mailing list