On Thu, Mar 17, 2022 at 01:21:24AM +0900, Stephen J. Turnbull wrote:
> MRAB writes:
>
> > I'm wondering whether an alterative could be a function for splicing
> > sequences such as lists and tuples which would avoid the need to create
> > and then destroy intermediate sequences:
> >
> > splice(alist, i, 1 + 1, [value])
>
> Does this make sense for lists?
I don't see why not.
> I don't see how you beat
>
> newlist = alist[:]
> newlist[index_or_slice] = value_or_sequence_respectively
We know the advantages of an expression versus a statement (or pair of
statements). If this was Ruby, we could use a block:
function(arg, {newlist = alist[:];
newlist[i] = value}, another_arg)
but it isn't and we can't.
> (instead of newlist = alist[:i] + [value] + alist[i+1:], which
> involves creating 4 lists instead of 1).
Indeed, the splice function could call a `__splice__` dunder that
specialises this for each type. It is hard to see how to write a
completely generic version.
--
Steve
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/B6PZHQQPG7UNCSH4T6AMDZUOI2CIBBQC/
Code of Conduct: http://python.org/psf/codeofconduct/