On Thu, Aug 30, 2018 at 3:02 AM Wes Turner <wes.turner@gmail.com> wrote:
By default, the sorted function looks at the leftmost element of a tuple or other iterable, when sorting...
You're right, my presentation is unclear. I'll fix it. The way it reads, it seems like you're implying that sorted() does this:
Yes, and that's wrong.
l = [(3, 2), (3, 1), (1, 1, 2), (1, 1)] sorted(l, key=lambda x: x[0]) [(1, 1, 2), (1, 1), (3, 2), (3, 1)]
You'll find some excellent overview of the magic methods in this essay by Rafe Kettler: A Guide to Python's Magic Methods. He's mostly looking at Python 2.7, so does not pick up on the __next__ method, however you'll be able to fill in the blanks thanks to this course
This is unclear to me. What does the next() function do? How do I find the docs and source for it?
next(obj) triggers obj.__next__() which in 2.7 is named next internally i.e. isn't magic. __next__ is the main driver of iterators e.g. for loops hit __next__ over and over as they loop over whatever. True, a list (iterable) doesn't have a __next__, but a for loop implicitly applies __iter__ (called by the iter function) which turns iterables into iterators.
These are misspelled:
comparitor compartor
Will fix next.
These are great: - http://www.scipy-lectures.org/intro/language/python_language.html - http://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/bl... - Something about sorted with a link to the docs would be a good addition.
Thanks. Yes, I'll add some links to the docs as you suggest. Great feedback! Actually as part of my class I'm showing them edu-sig and other python.org lists, so we were actually viewing this conversation. I'll extend that to showing your corrections, as I want to demonstrate how the Python community all teaches each other, is friendly and so on. Kirby