この記事では、リストの基本メソッドsort()
, reverse()
, count()
, index()
, copy()
について紹介します。
リストの作成や要素の追加・削除については別記事にまとめていますので、そちらを参照してください!
【解説動画】リストのメソッド
5min. Python解説動画【入門編】|第11回目:リストの基本メソッド
メソッド一覧
要素の並び替え関係
sort()
:要素を昇順、降順で並べ替えreverse()
:要素を逆順に並び替え
要素の数やインデックスを調べる
count()
:特定の要素が何個あるかindex()
:特定の要素の位置
リストのコピー
copy()
:リストをコピー
要素の並び替え関係
sort()
:要素を昇順、降順で並べ替えるreverse()
:要素を逆順に並び替える
sort():要素を昇順、降順で並び替え
デフォルトでは、リスト内の要素を昇順で並び替えます。
student_name = ["Ken", "Tom", "Bob"]
student_name.sort()
print(student_name)
# ⇒ ['Bob', 'Ken', 'Tom']
# 数字の並べ替え
num = [100, 0, 20, 4]
num.sort()
print(num)
# ⇒ [0, 4, 20, 100]
降順にしたい場合には、キーワード引数でreverse = True
を指定します。
student_name = ["Ken", "Tom", "Bob"]
student_name.sort(reverse=True)
print(student_name)
# ⇒ ['Tom', 'Ken', 'Bob']
キーワード引数というのは、引数の名前(キーワード)を指定して渡す引数のことです。
reverse():要素を逆順に並び替え
リストの要素を逆順に並び替えます。
student_name = ["Ken", "Tom", "Bob"]
student_name.reverse()
print(student_name)
# ⇒ ['Bob', 'Tom', 'Ken']
要素の並び替え関係
count(x)
:x
が何個あるか調べるindex(x)
:x
の位置を調べる
count():特定の要素が何個あるか調べる
引数で与えた要素がリスト内に何個あるか調べます。
student_name = ["Ken", "Tom", "Bob", "Tom"]
print( student_name.count("Tom") )
# ⇒ 2
index():特定の要素の位置を調べる
引数で与えた要素が、初めて現れる位置のインデックスを調べます。
student_name = ["Ken", "Tom", "Bob", "Tom"]
print( student_name.index("Tom") )
# ⇒ 1
start
やend
を指定して、探索するインデックスの範囲を指定することもできます。
student_name = ["Ken", "Tom", "Bob", "Tom"]
print( student_name.index("Tom", 2, 4) )
# ⇒ 3
このとき、start
とend
はリストのスライスと同様に、end
は探索範囲に含まれません!
start : end
のとき、start
からend-1
まででx
の位置を探します。
リストのコピー
- copy():リストをコピーします
コピーが必要な理由
コピーしたいなら、別の変数に代入すればいいじゃんと思うかもしれません。
pythonでは、リストを代入するだけではコピーになりません!
student_name = ["Ken", "Tom", "Bob"]
student_name_2 = student_name
print( student_name_2 )
# ⇒ ['Ken', 'Tom', 'Bob']
# student_name_2の要素を変更すると…
student_name_2[0] = "John"
# コピー元のstudent_nameの要素も変更される!
print( student_name )
# ⇒ [<span class="marker">'John'</span>, 'Tom', 'Bob']
片方のリストの要素を変更すると、もう片方のリストの要素も変わってしまいました。
=
の代入操作では、
- 新しくコピーを生成するわけではなく
- 2つの変数が同じものを指すことになるだけ
というわけです。
次の図のように同じリストに2つの名前がついている状態です。
is構文
を使用すると、2つの変数が同じものを指しているかを調べることができます。
print(student_name is student_name_2)
# ⇒ True
2つの変数は同一のリストを、異なる変数名で表現しているだけということがわかります。
copy():リストをコピーする
copy()
メソッドでは、=
の代入操作と異なり新たにコピーしたリストを生成します。
student_name = ["Ken", "Tom", "Bob"]
student_name_2 = student_name.copy()
print( student_name_2 )
# ⇒ ['Ken', 'Tom', 'Bob']
# student_name_2の要素を変更
student_name_2[0] = "John"
print( student_name_2)
# ⇒ ['John', 'Tom', 'Bob']
# コピー元のstudent_nameの要素は変更されない!
print( student_name )
# ⇒ ['Ken', 'Tom', 'Bob']
copy()
メソッドを使用すると、片方のリストの要素を変更しても他方のリストの要素は変更されません。
これはcopy()
メソッドでは、次の図のように新たにリストが生成されるためです。
is構文
を使用して、2つの変数が同一のリストを指しているか調べてみます。
print(student_name is student_name_2)
# False
たしかに、これらのリストは異なることがわかりました。
そのため、片方のリストの要素を変更しても、他方には影響しないわけですね!
ここで、注意しないといけないのは、pythonには
- 浅いコピー
- 深いコピー
というものがあります。
これらの違いはリスト内リストを扱う際に注意する必要があります。
浅いコピーと深いコピーは複雑な話になるのでまた別の機会にご紹介したいと思います。
おわりに
今回はリストの様々なメソッドについて紹介しました!
5min. python動画解説では、pythonの基本をショートクリップで解説しています!
流し見するだけでpythonをマスターできる動画シリーズを目指しています。
リストの作成や要素の追加・削除については別記事にまとめていますので、そちらを参照してください!