# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2016, Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-04-02 22:11+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../Doc/howto/sorting.rst:4 msgid "Sorting HOW TO" msgstr "" #: ../Doc/howto/sorting.rst:6 msgid "Andrew Dalke and Raymond Hettinger" msgstr "" #: ../Doc/howto/sorting.rst:7 msgid "0.1" msgstr "" #: ../Doc/howto/sorting.rst:10 msgid "" "Python lists have a built-in :meth:`list.sort` method that modifies the list " "in-place. There is also a :func:`sorted` built-in function that builds a " "new sorted list from an iterable." msgstr "" #: ../Doc/howto/sorting.rst:14 msgid "" "In this document, we explore the various techniques for sorting data using " "Python." msgstr "" #: ../Doc/howto/sorting.rst:18 msgid "Sorting Basics" msgstr "" #: ../Doc/howto/sorting.rst:20 msgid "" "A simple ascending sort is very easy: just call the :func:`sorted` function. " "It returns a new sorted list::" msgstr "" #: ../Doc/howto/sorting.rst:26 msgid "" "You can also use the :meth:`list.sort` method. It modifies the list in-place " "(and returns ``None`` to avoid confusion). Usually it's less convenient " "than :func:`sorted` - but if you don't need the original list, it's slightly " "more efficient." msgstr "" #: ../Doc/howto/sorting.rst:36 msgid "" "Another difference is that the :meth:`list.sort` method is only defined for " "lists. In contrast, the :func:`sorted` function accepts any iterable." msgstr "" #: ../Doc/howto/sorting.rst:43 msgid "Key Functions" msgstr "" #: ../Doc/howto/sorting.rst:45 msgid "" "Both :meth:`list.sort` and :func:`sorted` have a *key* parameter to specify " "a function to be called on each list element prior to making comparisons." msgstr "" #: ../Doc/howto/sorting.rst:48 msgid "For example, here's a case-insensitive string comparison:" msgstr "" #: ../Doc/howto/sorting.rst:53 msgid "" "The value of the *key* parameter should be a function that takes a single " "argument and returns a key to use for sorting purposes. This technique is " "fast because the key function is called exactly once for each input record." msgstr "" #: ../Doc/howto/sorting.rst:57 msgid "" "A common pattern is to sort complex objects using some of the object's " "indices as keys. For example:" msgstr "" #: ../Doc/howto/sorting.rst:68 msgid "" "The same technique works for objects with named attributes. For example:" msgstr "" #: ../Doc/howto/sorting.rst:87 msgid "Operator Module Functions" msgstr "" #: ../Doc/howto/sorting.rst:89 msgid "" "The key-function patterns shown above are very common, so Python provides " "convenience functions to make accessor functions easier and faster. The :mod:" "`operator` module has :func:`~operator.itemgetter`, :func:`~operator." "attrgetter`, and a :func:`~operator.methodcaller` function." msgstr "" #: ../Doc/howto/sorting.rst:94 msgid "Using those functions, the above examples become simpler and faster:" msgstr "" #: ../Doc/howto/sorting.rst:104 msgid "" "The operator module functions allow multiple levels of sorting. For example, " "to sort by *grade* then by *age*:" msgstr "" #: ../Doc/howto/sorting.rst:114 msgid "Ascending and Descending" msgstr "" #: ../Doc/howto/sorting.rst:116 msgid "" "Both :meth:`list.sort` and :func:`sorted` accept a *reverse* parameter with " "a boolean value. This is used to flag descending sorts. For example, to get " "the student data in reverse *age* order:" msgstr "" #: ../Doc/howto/sorting.rst:127 msgid "Sort Stability and Complex Sorts" msgstr "" #: ../Doc/howto/sorting.rst:129 msgid "" "Sorts are guaranteed to be `stable `_\\. That means that when multiple records have " "the same key, their original order is preserved." msgstr "" #: ../Doc/howto/sorting.rst:137 msgid "" "Notice how the two records for *blue* retain their original order so that " "``('blue', 1)`` is guaranteed to precede ``('blue', 2)``." msgstr "" #: ../Doc/howto/sorting.rst:140 msgid "" "This wonderful property lets you build complex sorts in a series of sorting " "steps. For example, to sort the student data by descending *grade* and then " "ascending *age*, do the *age* sort first and then sort again using *grade*:" msgstr "" #: ../Doc/howto/sorting.rst:148 msgid "" "The `Timsort `_ algorithm used in " "Python does multiple sorts efficiently because it can take advantage of any " "ordering already present in a dataset." msgstr "" #: ../Doc/howto/sorting.rst:153 msgid "The Old Way Using Decorate-Sort-Undecorate" msgstr "" #: ../Doc/howto/sorting.rst:155 msgid "This idiom is called Decorate-Sort-Undecorate after its three steps:" msgstr "" #: ../Doc/howto/sorting.rst:157 msgid "" "First, the initial list is decorated with new values that control the sort " "order." msgstr "" #: ../Doc/howto/sorting.rst:159 msgid "Second, the decorated list is sorted." msgstr "" #: ../Doc/howto/sorting.rst:161 msgid "" "Finally, the decorations are removed, creating a list that contains only the " "initial values in the new order." msgstr "" #: ../Doc/howto/sorting.rst:164 msgid "" "For example, to sort the student data by *grade* using the DSU approach:" msgstr "" #: ../Doc/howto/sorting.rst:171 msgid "" "This idiom works because tuples are compared lexicographically; the first " "items are compared; if they are the same then the second items are compared, " "and so on." msgstr "" #: ../Doc/howto/sorting.rst:175 msgid "" "It is not strictly necessary in all cases to include the index *i* in the " "decorated list, but including it gives two benefits:" msgstr "" #: ../Doc/howto/sorting.rst:178 msgid "" "The sort is stable -- if two items have the same key, their order will be " "preserved in the sorted list." msgstr "" #: ../Doc/howto/sorting.rst:181 msgid "" "The original items do not have to be comparable because the ordering of the " "decorated tuples will be determined by at most the first two items. So for " "example the original list could contain complex numbers which cannot be " "sorted directly." msgstr "" #: ../Doc/howto/sorting.rst:186 msgid "" "Another name for this idiom is `Schwartzian transform `_\\, after Randal L. Schwartz, who " "popularized it among Perl programmers." msgstr "" #: ../Doc/howto/sorting.rst:190 msgid "" "Now that Python sorting provides key-functions, this technique is not often " "needed." msgstr "" #: ../Doc/howto/sorting.rst:194 msgid "The Old Way Using the *cmp* Parameter" msgstr "" #: ../Doc/howto/sorting.rst:196 msgid "" "Many constructs given in this HOWTO assume Python 2.4 or later. Before that, " "there was no :func:`sorted` builtin and :meth:`list.sort` took no keyword " "arguments. Instead, all of the Py2.x versions supported a *cmp* parameter to " "handle user specified comparison functions." msgstr "" #: ../Doc/howto/sorting.rst:201 msgid "" "In Py3.0, the *cmp* parameter was removed entirely (as part of a larger " "effort to simplify and unify the language, eliminating the conflict between " "rich comparisons and the :meth:`__cmp__` magic method)." msgstr "" #: ../Doc/howto/sorting.rst:205 msgid "" "In Py2.x, sort allowed an optional function which can be called for doing " "the comparisons. That function should take two arguments to be compared and " "then return a negative value for less-than, return zero if they are equal, " "or return a positive value for greater-than. For example, we can do:" msgstr "" #: ../Doc/howto/sorting.rst:215 msgid "Or you can reverse the order of comparison with:" msgstr "" #: ../Doc/howto/sorting.rst:222 msgid "" "When porting code from Python 2.x to 3.x, the situation can arise when you " "have the user supplying a comparison function and you need to convert that " "to a key function. The following wrapper makes that easy to do::" msgstr "" #: ../Doc/howto/sorting.rst:245 msgid "To convert to a key function, just wrap the old comparison function:" msgstr "" #: ../Doc/howto/sorting.rst:256 msgid "" "In Python 3.2, the :func:`functools.cmp_to_key` function was added to the :" "mod:`functools` module in the standard library." msgstr "" #: ../Doc/howto/sorting.rst:260 msgid "Odd and Ends" msgstr "" #: ../Doc/howto/sorting.rst:262 msgid "" "For locale aware sorting, use :func:`locale.strxfrm` for a key function or :" "func:`locale.strcoll` for a comparison function." msgstr "" #: ../Doc/howto/sorting.rst:265 msgid "" "The *reverse* parameter still maintains sort stability (so that records with " "equal keys retain the original order). Interestingly, that effect can be " "simulated without the parameter by using the builtin :func:`reversed` " "function twice:" msgstr "" #: ../Doc/howto/sorting.rst:277 msgid "" "The sort routines are guaranteed to use :meth:`__lt__` when making " "comparisons between two objects. So, it is easy to add a standard sort order " "to a class by defining an :meth:`__lt__` method::" msgstr "" #: ../Doc/howto/sorting.rst:285 msgid "" "Key functions need not depend directly on the objects being sorted. A key " "function can also access external resources. For instance, if the student " "grades are stored in a dictionary, they can be used to sort a separate list " "of student names:" msgstr ""