mk <mrk...@gmail.com> wrote: >Brian Allen Vanderburg II wrote: >> I think it may be just a 'little' more efficient to do this: >> >> def flatten(x, res=None): >> if res is None: >> res = [] >> for el in x: >> if isinstance(el, (tuple, list)): >> flatten(el, res) >> else: >> res.append(el) >> return res > > >Hmm why should it be more efficient [than def flatten(x): res = [] for el in x: if isinstance(el,list): res.extend(flatten(el)) else: res.append(el) return res
]? extend operation should not be very costly? It's not a question of extend/append, it's the fact that your original function creates (and destroys) a new list for every recursive call. Which, if you've got large nested lists, will have an impact. -- \S -- si...@chiark.greenend.org.uk -- http://www.chaos.org.uk/~sion/ "Frankly I have no feelings towards penguins one way or the other" -- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
-- http://mail.python.org/mailman/listinfo/python-list