Has apparent 2.4b1 bug been fixed? flatten in Lib\compiler\ast.py overloads 'list' name

Larry Bates lbates at syscononline.com
Wed Jan 19 12:09:42 EST 2005


You have name clashing between Python's built in list function
and the variable called list that you pass into the function.
Change the passed in variable name to something else.

Larry Bates

Try something like (not tested):

def flatten(seq):
     l = []
     for elt in seq:
         if isinstance(elt, (list, tuple):
             for elt2 in flatten(elt):
                 l.append(elt2)
         else:
             l.append(elt)
     return l




Bengt Richter wrote:
> What am I missing? (this is from 2.4b1, so probably it has been fixed?)
> 
> 
> def flatten(list):
>     l = []
>     for elt in list:
>                ^^^^--must be expecting list instance or other sequence
>         t = type(elt)
>         if t is tuple or t is list:
>                               ^^^^--looks like it expects to refer to the type, not the arg
>             for elt2 in flatten(elt):
>                 l.append(elt2)
>         else:
>             l.append(elt)
>     return l
> 
> 
> Regards,
> Bengt Richter



More information about the Python-list mailing list