On Thu, Mar 30, 2017 at 04:23:05PM +0200, Pavol Lisy wrote: > On 3/30/17, Nick Coghlan <ncogh...@gmail.com> wrote: > > On 30 March 2017 at 19:18, Markus Meskanen <markusmeska...@gmail.com> > > wrote: > >> Hi Pythonistas, > >> > >> yet again today I ended up writing: > >> > >> d = [[0] * 5 for _ in range(10)] > > d = [[0]*5]*10 # what about this?
That doesn't do what you want. It's actually a common "gotcha", since it makes ten repetitions of the same five element list, not ten *copies*. py> d = [[0]*5]*10 py> d[0][0] = 9999 py> print(d) [[9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0], [9999, 0, 0, 0, 0]] A slightly unfortunate conflict between desires: on the one hand, we definitely don't want * making copies of its arguments; on the other hand, that makes it less useful for initialising multi-dimensional (nested) lists. But then, nested lists ought to be rare. "Flat is better than nested." > Simplified repeating could be probably useful in interactive mode. I'm sorry, did you just suggest that language features should behave differently in interactive mode than non-interactive mode? If so, that's a TERRIBLE idea. The point of interactive mode is to try out syntax and code and see what it does, before using it in non- interactive scripts. If things behave differently, people will be left confused why the *exact same line of code* works differently in a script and when they try it interactively. It is bad enough that the interactive interpreter includes a handful of features that make it different from non-interactive. I've been caught out repeatedly by the "last evaluated result" variable _ changing when the destructor method __del__ runs. That's another unavoidable case: adding extra, necessary functionality to the interactive interpreter, namely the ability to access the last evaluated result, neccessarily holds onto a reference to that last result. But that's easy enough to reason about, once you remember what's going on. But changing the behaviour of the language itself is just a bad idea. -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/