On Fri, 25 May 2018 11:48:49 +0100, Ben Bacarisse wrote: > Another way of looking at it would be in terms of evaluation rather than > copying. [<stuff>] evaluates to a new list object, so if there were an > alternate version of L * n (for the sake of argument L ** n) that > evaluated the list expression n times to make the new list you would > also get the behaviour you want.
The problem is, the * operator doesn't seen the expression "[]" it sees the object. So there's no way of delaying the evaluation of the [] until after the * operator is called in current Python, nor any way of telling it when to evaluate the expression. It would require special syntax, like the lambda syntax delays evaluation of the expression and returns a function, instead of evaluating the body of the function at the point of definition. I'm not interested in adding a special case to the interpreter just for this specific issue. If there was a way to delay arbitrary expressions in arbitrary places for arbitrary uses, that would be interesting to consider, but to limit it to "list ** count" is not. -- Steve -- https://mail.python.org/mailman/listinfo/python-list