List replication operator

bartc bc at freeuk.com
Fri May 25 08:36:58 EDT 2018


On 24/05/2018 19:17, Steven D'Aprano wrote:

> But what do people think about proposing a new list replication with copy
> operator?
> 
>      [[]]**5
> 
> would return a new list consisting of five shallow copies of the inner
> list.
> 
> Thoughts?

Choice of ** doesn't seem right for a start, as it suggests it should 
mean []*[]*[]*[]*[], which it doesn't. (Apparently []*2 /is/ the same as 
[]+[].)


How about just:

    x = dupllist([[]], 5)
    x[0].append(777)
    print (x)

which gives:

    [[777], [], [], [], []]

Of course you have to implement dupllist(), but you'd have to implement 
** too, and that is harder. For this specific example, it can just be:

def dupllist(x,n):
     return [x[0].copy() for _ in range(n)]

-- 
bartc





More information about the Python-list mailing list