Published Date : 2020年4月29日13:03

【Python】Pythonのリストにおけるsort()とreverse()メソッド
【Python】sort() and reverse() methods in Python lists


This blog has an English translation


YouTubeにアップした動画、「【Python】Part 4 - 一分間の3Dアニメーションで理解するPythonの基礎」の補足説明の記事です。

Here's a little more about the "【Python】Part 4 - Understand the basics of Python with a one-minute 3D animation" video I uploaded to YouTube.

Pythonの変数のインデックス番号を指定して値を取得するか、値を指定してインデックス番号を取得したりできるようにしよう。

Let's retrieves a value by specifying the index number of Python variable, or retrieves an index number by specifying a value

【Python】Part 4 - 一分間の3Dアニメーションで理解するPythonの基礎 : Understand the basics of Python with a one-minute 3D animation


こちらの記事も動画同様一分で読み終わります。

You can read this post in a minute, just like the video above.

まずコマンドプロンプトかターミナルを立ち上げて、Pythonと打ちます。

First, Start up a command prompt or terminal and type Python.

$ python

まず適当な数値のリスト変数を作成します。

First, create a list variable of appropriate numbers.

>>> kuromi = [9, 6, 3]
>>> print(kuromi)
[9, 6, 3]

この数値のリスト変数の順番を昇順に直したい場合はsort()メソッドを使います。

If you want to reorder the numeric list variables in ascending order, use the sort() method.

>>> kuromi.sort()
>>> print(kuromi)
[3, 6, 9]

ここで、「kuromi.sort()」を行うと、何も返されませんが、リスト変数は昇順にソートされています。

[kuromi.sort()] returns nothing, but the list variables are sorted in ascending order.

>>> kuromi = [9, 6, 3]
>>> print(kuromi.sort())
None
>>> print(kuromi)
[3, 6, 9]

このメソッドは何も返さないという点に注意してください。なぜなら、変数の代入を行っても元の変数自体はすでに昇順にソートされてしまっているので、後で元の変数を元の順番として再利用しようとすると問題が生じます。

Note that this method returns nothing. This is because when you assign a variable, the original variable itself is already sorted in ascending order, so you will have problems later if you try to reuse the original variable in its original order.

>>> kuromi = [9, 6, 3]
>>> miroku = kuromi.sort()
>>> print(miroku)
[3, 6, 9]
>>> print(kuromi)
[3, 6, 9]

なので、「sort()メソッド」を使う際は気を付けてください。変数そのものを変化させたくない場合はsorted()関数を使用しましょう。

So be careful when you use [sort() method]. If you don't want to change the variable itself, use the sorted() function.

>>> kuromi = [9,6,3]

>>> print(kuromi)
[9, 6, 3]

>>> miroku = sorted(kuromi)

>>> print(miroku)
[3, 6, 9]

>>> print(kuromi)
[9, 6, 3]    
      

リストの順番を逆にしたい場合はreverse()メソッドを使用しましょう。

If you want to reverse the order of the list, use the reverse() method.

>>> kuromi = [9,6,3]

>>> print(kuromi)
[9, 6, 3]

>>> kuromi.reverse()

>>> print(kuromi)
[3, 6, 9]

sort()メソッドと同様に、reverse()メソッドは何も返さず、リスト変数の順番を直接変えてしまいます。

Like the sort() method, the reverse() method returns nothing, directly reordering the list variables.

>>> kuromi = [9,6,3]

>>> print(kuromi.reverse())
None

>>> print(kuromi)
[3, 6, 9]

そこで、元の変数の順番を変えないようなsorted()関数と同様にreversed()関数が用意されていますが、気を付けなければならないのはreversed()関数はイテレータオブジェクトを返すということです。

So, like the sorted() function, which does not change the order of the original variables, there is a reversed() function, but it is important to note that the reversed() function returns an iterator object.

イテレータオブジェクトになると今までのリストオブジェクトみたいにprint()関数を使用して中身を見ることができません。 その代わりに、For文やNext関数等を使用しなければいけません。

Iterator objects cannot be seen using the print() function like previous list objects. Instead, you must use the For statement, the Next function, and so on.

>>> kuromi = [9,6,3]

>>> print(kuromi)
[9, 6, 3]

>>> reversed_kuromi = reversed(kuromi)

>>> print(reversed_kuromi)


>>> for i in reversed_kuromi:
...    print(i)
... 
3
6
9

注意が必要なのはイテレータオブジェクトは一度値を取り出すと中身が空っぽになってしまいます。

Note that iterator objects are empty once the value is retrieved.

>>> reversed_kuromi = reversed(kuromi)

>>> for i in reversed_kuromi:
...     print(i)
... 
3
6
9

>>> for i in reversed_kuromi:
...     print(i)
... 
        
>>> reversed_kuromi = reversed(kuromi)

>>> print(reversed_kuromi)


>>> next(reversed_kuromi)
3

>>> next(reversed_kuromi)
6

>>> next(reversed_kuromi)
9

>>> next(reversed_kuromi)
---------------------------------------------------------------------------
StopIteration
Traceback (most recent call last)
----> 1 next(reversed_kuromi)

StopIteration:

なので変数に代入して使うより、直接for文と共に使用するほうが分かりやすくていいでしょう。

So it's easier to use it directly with the for statement than it is to assign it to a variable.

>>> kuromi
[9, 6, 3]

>>> for i in reversed(kuromi):
...     print(i)
... 
3
6
9

>>> for i in reversed(kuromi):
...     print(i)
... 
3
6
9

>>> print(kuromi)
[9, 6, 3]

文字列のリストもソートしてくれます。

It also sorts a list of strings.

>>> alphabetic_list = ['t','r','s','a']

>>> print(sorted(alphabetic_list))
['a', 'r', 's', 't']

>>> alphabetic_list = ['t','r','s','a','A']

>>> print(sorted(alphabetic_list))
['A', 'a', 'r', 's', 't']

>>> alphabetic_list = ['t','r','s','S','a','A']

>>> print(sorted(alphabetic_list))
['A', 'S', 'a', 'r', 's', 't']
>>> 日本語 = ['か','あ','さ','だ','ゆ']

>>> print(sorted(日本語))
['あ', 'か', 'さ', 'だ', 'ゆ']

>>> 日本語 = ['か','あ','さ','だ','ゆ','漢字']

>>> print(sorted(日本語))
['あ', 'か', 'さ', 'だ', 'ゆ', '漢字']

>>> 日本語 = ['か','あ','さ','だ','ゆ','漢字','亜','伊']

>>> print(sorted(日本語))
['あ', 'か', 'さ', 'だ', 'ゆ', '亜', '伊', '漢字']




See You Next Page!