Python でタプルのリストを並べ替える
Python では、タプルを使って複数の項目を 1つの変数に格納することができます。タプルのリストは整数のリストのように並べ替えることができます。
このチュートリアルでは、タプルのリストを、タプルの 1 番目、2 番目、または ith 番目の要素に基づいてソートするさまざまな方法について説明します。
Python でタプルのリストをソートするには list.sort()
関数を使用する
関数 list.sort()
はリストの要素を昇順または降順にソートします。パラメータ key
はソートに用いる値を指定します。key
は各リストの要素に適用できる関数やその他の呼び出し可能なものでなければならません。
以下のコードは、すべてのタプルの 2 番目の要素に基づいてタプルをソートします。
list_students = [
("Vaibhhav", 86),
("Manav", 91),
("Rajesh", 88),
("Sam", 84),
("Richie", 89),
]
# sort by second element of tuple
list_students.sort(key=lambda x: x[1]) # index 1 means second element
print(list_students)
出力:
[('Sam',84), ('Vaibhhav',86), ('Rajesh',88), ('Richie',89), ('Manav',91)]
sort()
メソッドの reverse
パラメータに True
を指定することで、順序を逆にして降順にすることができます。
次のコードは、reverse
パラメータを用いてタプルのリストを降順にソートします。
list_students = [
("Vaibhhav", 86),
("Manav", 91),
("Rajesh", 88),
("Sam", 84),
("Richie", 89),
]
# sort by second element of tuple
list_students.sort(key=lambda x: x[1], reverse=True)
print(list_students)
出力:
[('Manav',91), ('Richie',89), ('Rajesh',88), ('Vaibhhav',86), ('Sam',84)]
バブルソートアルゴリズムを使って Python でタプルのリストをソートする
バブルソートは、最も単純なソートアルゴリズムの 1つです。これは、リスト内の隣接する要素の順序が間違っている場合には、リスト内の隣接する要素を入れ替えることで動作し、リストがソートされるまでこのステップを繰り返します。
次のコードは、2 番目の要素に基づいてタプルをソートし、バブルソートアルゴリズムを使用しています。
list_ = [("Vaibhhav", 86), ("Manav", 91), ("Rajesh", 88), ("Sam", 84), ("Richie", 89)]
# sort by second element of tuple
pos = 1
list_length = len(list_)
for i in range(0, list_length):
for j in range(0, list_length - i - 1):
if list_[j][pos] > list_[j + 1][pos]:
temp = list_[j]
list_[j] = list_[j + 1]
list_[j + 1] = temp
print(list_)
出力:
[('Sam',84), ('Vaibhhav',86), ('Rajesh',88), ('Richie',89), ('Manav',91)]
変数 pos
はソートを行う位置を指定します。
タプルのリストをソートするために 1 番目の要素を使うこともできます。以下のプログラムはこれを実装したものです。
list_ = [("Vaibhhav", 86), ("Manav", 91), ("Rajesh", 88), ("Sam", 84), ("Richie", 89)]
# sort by first element of tuple
pos = 0
list_length = len(list_)
for i in range(0, list_length):
for j in range(0, list_length - i - 1):
if list_[j][pos] > list_[j + 1][pos]:
temp = list_[j]
list_[j] = list_[j + 1]
list_[j + 1] = temp
print(list_)
出力:
[('Manav',91), ('Rajesh',88), ('Richie',89), ('Sam',84), ('Vaibhhav',86)]
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn