summaryrefslogtreecommitdiff
path: root/Doc/faq
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2016-05-26 22:56:51 -0700
committerBenjamin Peterson <benjamin@python.org>2016-05-26 22:56:51 -0700
commitf50cc9ad663a523901087282aff512fcb928d768 (patch)
tree61f4f6df03117e66e48034b4f995d0103a5762e2 /Doc/faq
parentmerge 3.5 (diff)
parentremove cruft from Schwarzian transform section (diff)
downloadcpython-f50cc9ad663a523901087282aff512fcb928d768.tar.gz
cpython-f50cc9ad663a523901087282aff512fcb928d768.tar.bz2
cpython-f50cc9ad663a523901087282aff512fcb928d768.zip
merge 3.5
Diffstat (limited to 'Doc/faq')
-rw-r--r--Doc/faq/programming.rst31
1 files changed, 1 insertions, 30 deletions
diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst
index 50471e851b6..a0ddfb4fc95 100644
--- a/Doc/faq/programming.rst
+++ b/Doc/faq/programming.rst
@@ -1313,40 +1313,11 @@ I want to do a complicated sort: can you do a Schwartzian Transform in Python?
The technique, attributed to Randal Schwartz of the Perl community, sorts the
elements of a list by a metric which maps each element to its "sort value". In
-Python, just use the ``key`` argument for the ``sort()`` method::
+Python, use the ``key`` argument for the :func:`sort()` function::
Isorted = L[:]
Isorted.sort(key=lambda s: int(s[10:15]))
-The ``key`` argument is new in Python 2.4, for older versions this kind of
-sorting is quite simple to do with list comprehensions. To sort a list of
-strings by their uppercase values::
-
- tmp1 = [(x.upper(), x) for x in L] # Schwartzian transform
- tmp1.sort()
- Usorted = [x[1] for x in tmp1]
-
-To sort by the integer value of a subfield extending from positions 10-15 in
-each string::
-
- tmp2 = [(int(s[10:15]), s) for s in L] # Schwartzian transform
- tmp2.sort()
- Isorted = [x[1] for x in tmp2]
-
-For versions prior to 3.0, Isorted may also be computed by ::
-
- def intfield(s):
- return int(s[10:15])
-
- def Icmp(s1, s2):
- return cmp(intfield(s1), intfield(s2))
-
- Isorted = L[:]
- Isorted.sort(Icmp)
-
-but since this method calls ``intfield()`` many times for each element of L, it
-is slower than the Schwartzian Transform.
-
How can I sort one list by values from another list?
----------------------------------------------------