"George Sakkis" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> Actually my initial motivation was not a huge tuple I had to slice many 
> times. It was something much
> less extraordinarily unlikely, a recursive function with a sequence 
> parameter:
>
> def foo(sequence):
>    # base_case
>    # do_stuff()
>    combine(foo(sequence[:n]),
>                  foo(sequence[n:]))
>
> Having each slice be a view of the original sequence instead of a fresh 
> copy would be a Good Thing

Why?  To save time? memory?  Either would require more that a few bytes per 
slice.   If they are, you can probably use virtual slices as follows.

def foo(sequence):
  def _foo(seq, start, stop)
     # base_case
     # do_stuff()
     combine(_foo(seq, start, n), _foo(seq, n, stop))
  _foo(sequence, 0, len(sequence)

In other words, if you don't really want slices copied out of the sequence, 
then don't slice!  Just use 2 ints to indicate the working region or view. 
Both this and using a nested function with additional params are standard 
techniques.  This also works when the seq is mutable and you want changes 
to the 'slice' to change the original, as in quicksort.

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to