Skip to content

Translate howto/sorting from section 'Decorate-Sort-Undecorate' to end #580

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 18, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 42 additions & 11 deletions howto/sorting.po
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.12\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-24 00:03+0000\n"
"PO-Revision-Date: 2023-08-09 18:16+0800\n"
"PO-Revision-Date: 2023-08-12 15:09+0800\n"
"Last-Translator: Adrian Liaw <[email protected]>\n"
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
"tw)\n"
Expand Down Expand Up @@ -216,51 +216,57 @@ msgstr ""

#: ../../howto/sorting.rst:190
msgid "Decorate-Sort-Undecorate"
msgstr ""
msgstr "裝飾-排序-移除裝飾 (decorate-sort-undecorate)"

#: ../../howto/sorting.rst:192
msgid "This idiom is called Decorate-Sort-Undecorate after its three steps:"
msgstr ""
msgstr "這個用語的來源是因為它做了以下三件事情:"

#: ../../howto/sorting.rst:194
msgid ""
"First, the initial list is decorated with new values that control the sort "
"order."
msgstr ""
msgstr "首先,原始串列會裝飾 (decorated) 上新的值用來控制排序的順序。"

#: ../../howto/sorting.rst:196
msgid "Second, the decorated list is sorted."
msgstr ""
msgstr "接下來,排序裝飾過的串列。"

#: ../../howto/sorting.rst:198
msgid ""
"Finally, the decorations are removed, creating a list that contains only the "
"initial values in the new order."
msgstr ""
msgstr "最後,裝飾會被移除,並以新的順序產生一個只包含原始值的串列。"

#: ../../howto/sorting.rst:201
msgid ""
"For example, to sort the student data by *grade* using the DSU approach:"
msgstr ""
msgstr "例如用上面說的方式來以 *grade* 排序學生資料:"

#: ../../howto/sorting.rst:208
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 ""
"這個方式會有效是因為元組是依照字典順序 (lexicographically) 來比較,先比較第"
"一個項目,如果一樣再比較第二個項目,並依此類推。"

#: ../../howto/sorting.rst:212
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 ""
"在所有情況下都把索引 *i* 加入已裝飾的串列並不是絕對需要的,但這樣做會有兩個好"
"處:"

#: ../../howto/sorting.rst:215
msgid ""
"The sort is stable -- if two items have the same key, their order will be "
"preserved in the sorted list."
msgstr ""
"排序會是穩定的 -- 如果兩個項目有相同的鍵,它們在排序好的串列中會保持原來的順"
"序。"

#: ../../howto/sorting.rst:218
msgid ""
Expand All @@ -269,29 +275,34 @@ msgid ""
"example the original list could contain complex numbers which cannot be "
"sorted directly."
msgstr ""
"原始項目不需要是可以比較的,因為最多只會用到前兩個項目就能決定裝飾過的元組的"
"順序。例如原始串列可以包含不能直接用來排序的複數。"

#: ../../howto/sorting.rst:223
msgid ""
"Another name for this idiom is `Schwartzian transform <https://en.wikipedia."
"org/wiki/Schwartzian_transform>`_\\, after Randal L. Schwartz, who "
"popularized it among Perl programmers."
msgstr ""
"這個用語的另一個名字是 `Schwartzian transform <https://en.wikipedia.org/wiki/"
"Schwartzian_transform>`_\\ ,是由於 Randal L. Schwartz 讓這個方法在 Perl 程式"
"設計師間普及。"

#: ../../howto/sorting.rst:227
msgid ""
"Now that Python sorting provides key-functions, this technique is not often "
"needed."
msgstr ""
msgstr "而因為 Python 的排序提供了鍵函式,已經不太需要用到這個方法了。"

#: ../../howto/sorting.rst:230
msgid "Comparison Functions"
msgstr ""
msgstr "比較函式 (comparison functions)"

#: ../../howto/sorting.rst:232
msgid ""
"Unlike key functions that return an absolute value for sorting, a comparison "
"function computes the relative ordering for two inputs."
msgstr ""
msgstr "不像鍵函式回傳一個用來排序的值,比較函式計算兩個輸入間的相對順序。"

#: ../../howto/sorting.rst:235
msgid ""
Expand All @@ -301,6 +312,10 @@ msgid ""
"function such as ``cmp(a, b)`` will return a negative value for less-than, "
"zero if the inputs are equal, or a positive value for greater-than."
msgstr ""
"例如\\ `天秤 <https://upload.wikimedia.org/wikipedia/commons/1/17/"
"Balance_à_tabac_1850.JPG>`_\\ 比較兩邊樣本並給出相對的順序:較輕、相同或較"
"重。同樣地,像是 ``cmp(a, b)`` 這樣的比較函式會回傳負數代表小於、0 代表輸入相"
"同或正數代表大於。"

#: ../../howto/sorting.rst:242
msgid ""
Expand All @@ -309,17 +324,21 @@ msgid ""
"part of their API. For example, :func:`locale.strcoll` is a comparison "
"function."
msgstr ""
"當從其它語言翻譯演算法的時候常看到比較函式。有些函式庫也會提供比較函式作為其 "
"API 的一部份,例如 :func:`locale.strcoll` 就是一個比較函式。"

#: ../../howto/sorting.rst:246
msgid ""
"To accommodate those situations, Python provides :class:`functools."
"cmp_to_key` to wrap the comparison function to make it usable as a key "
"function::"
msgstr ""
"為了滿足這些情境,Python 提供 :class:`functools.cmp_to_key` 來包裝比較函式,"
"讓其可以當作鍵函式來使用: ::"

#: ../../howto/sorting.rst:253
msgid "Odds and Ends"
msgstr ""
msgstr "雜項說明"

#: ../../howto/sorting.rst:255
msgid ""
Expand All @@ -328,6 +347,9 @@ msgid ""
"\"alphabetical\" sort orderings can vary across cultures even if the "
"underlying alphabet is the same."
msgstr ""
"要處理能理解本地語系 (locale aware) 的排序可以使用 :func:`locale.strxfrm` 當"
"作鍵函式,或 :func:`locale.strcoll` 當作比較函式。這樣做是必要的,因為在不同"
"文化中就算是相同的字母,按「字母順序」排序的結果也各不相同。"

#: ../../howto/sorting.rst:260
msgid ""
Expand All @@ -336,19 +358,26 @@ msgid ""
"simulated without the parameter by using the builtin :func:`reversed` "
"function twice:"
msgstr ""
"*reverse* 參數依然會維持排序穩定性(即有相同鍵的資料會保持原來順序)。有趣的"
"是,不加這個參數也可以模擬這個效果,只要使用內建的 :func:`reversed` 函式兩"
"次:"

#: ../../howto/sorting.rst:274
msgid ""
"The sort routines use ``<`` when making comparisons between two objects. So, "
"it is easy to add a standard sort order to a class by defining an :meth:"
"`~object.__lt__` method:"
msgstr ""
"排序時會使用 ``<`` 來比較兩個物件,因此要在類別裡面加入排序順序比較規則是簡單"
"的,只要透過定義 :meth:`~object.__lt__` 方法:"

#: ../../howto/sorting.rst:284
msgid ""
"However, note that ``<`` can fall back to using :meth:`~object.__gt__` if :"
"meth:`~object.__lt__` is not implemented (see :func:`object.__lt__`)."
msgstr ""
"然而,需要注意如果沒有實作 :meth:`~object.__lt__`,則 ``<`` 會退而使用 :meth:"
"`~object.__gt__`\\ (參見 :func:`object.__lt__`)。"

#: ../../howto/sorting.rst:287
msgid ""
Expand All @@ -357,3 +386,5 @@ msgid ""
"grades are stored in a dictionary, they can be used to sort a separate list "
"of student names:"
msgstr ""
"鍵函式不需要直接依賴用來排序的物件。鍵函式也可以存取外部資源,例如如果學生成"
"績儲存在字典裡,它可以用來排序一個單獨的學生姓名串列:"