Tuple slices
Terry Reedy
tjreedy at udel.edu
Mon Jan 24 20:57:27 EST 2005
"George Sakkis" <gsakkis at rutgers.edu> wrote in message
news:35lbvdF4k3ss4U1 at individual.net...
> 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
More information about the Python-list
mailing list