Python リストの要素を並べ替える | プログラミング学習 初心者向け入門ガイド

ホーム › >>

Python リストの要素を並べ替える

記事掲載:https://laptrinhcanban.com/ja

リストを作成した後、python リスト内の要素を昇順または降順で自由に並べ替えることができることをご存知ですか? このレッスンを通じて、python リスト内の要素をソートする方法を学びます。

Python list の要素をソートするには、 sort() メソッドまたはPython の List sorted() 関数を使用する必要があります。この 2 つの方法では、リスト内の要素の値を昇順または降順で直接並べ替えます。または、これらの要素の値を中間関数の引数として使用し、返された値を取得して、sorted() 関数でpython sorted key
パラメータを使用して要素の並べ替えを実行することもできます。

Python リストの要素を昇順に並べ替える

リスト内の要素を昇順で並べ替え | Python のリスト sorted() 関数

次の構文で Python の List sorted() 関数を使用して、リスト内の要素を昇順で並べ替えます。

新しいリスト = sorted ( 元リスト , * , key = None, reverse = False)

ほとんどの引数を省略し、次の構文のように元リスト引数のみを使用することもできます。実際、これは最も一般的に使用されます。

新しいリスト = sorted ( 元リスト)

尚、sorted() 関数は、リストだけでなく、文字列やタプルなどの他のiterableにも使用できます。したがって、元リスト引数を他のデータ型に置き換えることもできます。

注目すべき唯一のことは、引数型はどれにでも。ただし、返される結果は常にlist新しいものになります。文字列をソートするのに、返される結果がリストである理由を不思議に思う必要はありません。

理解しやすくするために、次の例を参照してください。次のように Python で sorted() 関数を使用します。

mylist = ["C", "A", "B"]
newlist = sorted(mylist)

print(mylist)
#>> ["C", "A", "B"]

print(newlist)
#>> ["A", "B", "C"]

ご覧のとおり、元リストのmylistの要素が昇順で並べ替えられた結果をもとに、新しいリストが作成されましたね。

リスト内の要素を昇順で並べ替え | sort() メソッド

以下のように簡単な構文で sort() メソッドを使用して、Python リストの要素を昇順にソートすることもできます。

list.sort()

Python の sort() メソッドは、元のリストの要素を元の順序で並べ替えます。元のリスト自体が並べ替えられ、新しいリストは作成されないことに注意してください。

Ví dụ cụ thể :

mylist = ["C", "A", "B"]
mylist.sort()

print(mylist)
#>> ["A", "B", "C"]

Pythonのsorted(list)とlist.sort()の違い

リスト内の要素を昇順でソートするために sorted(list) と list.sort() の両方を使用していますが、これら 2 つの方法には大きな違いがあります。

  • sorted() 関数は元のリストを変更せず、元のリストからソート済みの新しいリストを作成します。
  • sort() メソッドは新しいリストを作成せず、元のリスト自体を再配置するだけです。

また、関数とメソッドは本質的に概念が異なり、性質や使用法も異なることに注意する必要があります。

つまり、 新しいリストを作成する必要がある場合は、sorted() 関数を使用します。それ以外の場合、新しいリストを作成する必要がない場合は、sort() メソッドを使用して Python リスト内の要素をソートします。

ここでは、特定の例を使用して、Python で list.sort() と sorted(list) を比較します。

数値要素でリストを並べ替える:

#sorted (list)を使う 
numlist = [84, 75, 92, 90, 78]
newnumlist = sorted(numlist)
print(newnumlist)
##> [75, 78, 84, 90, 92]

#list.sort()を使う
numlist = [84, 75, 92, 90, 78]
numlist.sort()
print(numlist)
##> [75, 78, 84, 90, 92]

文字要素を含むリストのソート:

#sorted (list)を使う 
colorlist = ["Blue", "Red", "Green", "White", "Black"]
newwcolor = sorted(colorlist)
print(newwcolor)
#>> ['Black', 'Blue', 'Green', 'Red', 'White']

#list.sort()を使う
colorlist = ["Blue", "Red", "Green", "White", "Black"]
colorlist.sort()
print(colorlist)
#>> ['Black', 'Blue', 'Green', 'Red', 'White']

Python リストの要素を降順で並べ替える

デフォルトでは、sorted() または sort() メソッドはリストを昇順でソートします。したがって、Python リストの要素を昇順で並べ替えたい場合は、デフォルトで Kiyoshi が上で指示したように関数とメソッドを記述します。

逆に、Python リストの要素を降順で並べ替える場合は、次の構文でsorted() 関数に追加のreverse = Trueの引数を指定します。

新しいリスト = sorted ( 元リスト , reverse = True)

ここでの違いはreverse引数のデフォルト値をFalseからTrueに指定しただけです。
Python リストの要素を降順で並べ替える次の例を見てみましょう。

mylist = ["C", "A", "B"]

# 昇順でソート
newlist = sorted(mylist)
print(newlist)
#>> ['A', 'B', 'C']

# reverse=False で昇順ソート
newlist = sorted(mylist, reverse=False)
print(newlist)
#>> ['A', 'B', 'C']

# 降順でソート
newlist = sorted(mylist, reverse=True)
print(newlist)
#>> ["C", "B", "A"]

別のより複雑な例を試してみましょう。:

colorlist = ["Blue", "Red", "Green", "White", "Black"]

asc_colorlist = sorted(colorlist)
desc_colorlist = sorted(colorlist, reverse=True)

print("元リスト:", colorlist)
#>> 元リスト: ['Blue', 'Red', 'Green', 'White', 'Black']
print("昇順: ", asc_colorlist)
#>> 昇順: ['Black', 'Blue', 'Green', 'Red', 'White']
print("降順: ", desc_colorlist)
#>> 降順: ['White', 'Red', 'Green', 'Blue', 'Black']

さまざまなデータ型の要素を含む Python リストの要素を並べ替える

前のセクションでは、リストがすべての数字や文字列など、同じ要素のみで構成されている場合に、python リスト内の要素を並べ替える方法を学びました。では、リスト内の要素のデータ型が異なる場合、どうすればよいでしょうか?

ここでの答えは、リスト内の要素のデータ型が異なっていても比較可能である場合、 sorted() 関数またはsort() メソッドを使用して通常どおりリストをソートできるということです。

たとえば整数や実数などで並べ替えたい場合、次の例のようにします:

#整数と実数のリストをソートします。
numlist = [5, 3.14, 4,78, 4]

newnumlist = sorted (numlist)
print (newnumlist)
#>> [3.14, 4, 4, 5, 78]

しかし、異なるデータ型を持つ要素のリストを並べ替えたい場合、例えば数と数字など比較できない場合、sorted() 関数を使用すると、次のようにエラーTypeErrorが発生します。

mylist = ["80", 75, 45, "68"]
newmylist = sorted(mylist)

エラーの戻り値:

Traceback (most recent call last):
File "Main.py", line 2, in <module>
newmylist = sorted(mylist)
TypeError: '<' not supported between instances of 'int' and 'str'

キーを使用しpythonでリスト内の要素を並べ替える

上記では、リスト内の要素の値を直接使用して要素をソートする方法を学びました。これに加えて、これらの要素の値をの関数またはメソッドへの引数として使用し、返された値を取得して要素の並べ替えを続行することもできます。

これは、要素の値ではなく、要素を構成する文字列の長さ、要素の絶対値などに基づいてリストを並べ替える方法を決定する場合に特に便利です。

並べ替える前にリスト内の値を変換する関数またはメソッドを指定するには、次の構文で sorted() 関数のkey引数を使用します。

新しいリスト = sorted ( 元リスト, key = 関数名)

そこで、key引数の後に abs()、len()、または upper() メソッドなどの関数またはメソッドを指定できます。

以下の具体例を見てみましょう。

文字列内の要素を構成する文字列の長さでpythonリスト内の要素をソートします

リスト内の要素を構成する文字列の長さを見つけるのに役立つlen()関数を関数名として指定します。

mylist = ["apple", "pen", "desk", "banana"]

sorted(mylist)
#>> ['apple', 'banana', 'desk', 'pen']

sorted(mylist, key=len)
#>> ['pen', 'desk', 'apple', 'banana']

文字列内の要素の絶対値でPythonリスト内の要素をソートします

次の例のように、絶対値を与えるabs()関数を関数名として指定します。

mylist = [5, -4, -7, 6]

sorted(mylist)
#>> [-7, -4, 5, 6]

sorted(mylist, key=abs)
#>> [-4, 5, 6, -7]

文字列内の要素を小文字に変換した値で Python リスト内の要素を並べ替える

次の例のように、文字列を小文字に変換するlowerメソッドを関数名として指定します。

animallist = ["Cat", "monkey", "bear", "Sheep", "cow"]

sortlist = sorted(animallist)
lowersortlist = sorted(animallist, key=str.lower)

print(animallist)
#>> ['Cat', 'monkey', 'bear', 'Sheep', 'cow']

print(sortlist)
#>> ['Cat', 'Sheep', 'bear', 'cow', 'monkey']

print(lowersortlist)
#>> ['bear', 'Cat', 'cow', 'monkey', 'Sheep']

さらに、ほとんどの文字列処理メソッドを使用してキーを指定することもできます。これらのメソッドについては、トピックPythonの文字列を参照してください。

Python で sorted() 関数または sort() メソッドを使用した並べ替えの欠点

これら 2 つのメソッドは非常に使いやすく、ほとんどの場合正しくソートできますが、次の例のように、sorted() 関数または sort() メソッドでは自然なソート結果を生成できない場合がほとんどです。

a = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
sorted(a)
print(a)
#>>['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']

必要な結果は次のとおりです。

['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

だが、上記の例のように、sorted() 関数は必要な結果を提供していません。

この場合、python のインストール時に組み込まれていない別の関数というnatsort()関数を使用する必要があります。この関数は、python をインストールした後デフォルトでは含まれていません。pip install natsortといったコマンドでインストールする必要があります。その後、import使用してから初めて利用することができます。この機能については、別のレッスンで学習します。

まとめ

上記 Kiyoshi はpython listの要素をソートする方法を示しました。レッスンの内容をよりよく理解するために、今日の例を書き直す練習をしてください。

そして、次のレッスンで Python の知識についてさらに学びましょう。

URL Link

https://laptrinhcanban.com/ja/python/nhap-mon-lap-trinh-python/list-trong-python/sap-xep-phan-tu-trong-list-python/

この記事は役立つと思ったらいいね!とシェアをお願いします
">

ホーム  › >>

Profile
きよしです!笑

Author: Kiyoshi (Chis Thanh)

Kiyoshi was a former international student in Japan. After graduating from Toyama University in 2017, Kiyoshi is currently working as a BrSE in Tokyo, Japan.