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


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to