Le 28/02/2017 à 15:45, Steven D'Aprano a écrit : > On Tue, Feb 28, 2017 at 12:54:26PM +0100, Michel Desmoulin wrote: >> dict.get() is a very useful method, but for lists and tuples, we need to >> rely on try/except instead. > > No you don't. You can use slicing. > > alist = [1, 2, 3] > print(alist[99:100]) # get the item at position 99
No this gives you a list of one item or an empty list. dict.get('key', default_value) let you get a SCALAR value, OR a default value if it doesn't exist. It's a very different use case. > > In my experience, dict.get is very useful, but list.get only *seems* > useful. I've written my own version: > > def get(alist, pos, default=None): > try: > return alist[pos] > except IndexError: > return default > > Based on your rational, we would just reject dict.get as well the first time it's implemented. > but then struggled to find a good use for it. It seems like it ought to > be useful, but in practice I found that it was only covering up bugs in > my code. How so ? "get the element x or a default value if it doesn't exist" seem at the contrary, a very robust approach. Plus it's consistent. It's only fair to expect it to exists after you learn about dict.get. First places where I missed it at the top of my head was *args, sys.argv personnaly. If I was indexing a list outside of the range of existing > items, that's a bug, and using get() just made it hard to fix. > > > >> Can we get list.get and tuple.get as well? >> >> Also, for list, a list.setdefault like the dict.setdefault would be logical. > > What would it do? > > For example, given: > > alist = [] > y = alist.setdefault(10, 'a') > > what will alist equal? Fair enough. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/