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 -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/B6PZHQQPG7UNCSH4T6AMDZUOI2CIBBQC/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to