"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