0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python リストのメソッド使い方(基礎)

Last updated at Posted at 2023-03-12

Pythonの初学者向けに基礎となるリストのメソッドすべて、使い方と結果を簡単にまとめました。単語の意味がそのままメソッドの内容を示していることも多く、内容を思い出す時に捗るので和訳も載せておきます。

リストの特徴と生成

特徴
リストは複数の値を1列に並べて管理するコレクション。格納されている値はそれぞれ要素と言う。先頭から順に0から始まるインデックス(添え字)番号が割り振られる。
生成
[](角括弧)で生成。list()でも同様に生成可能。

a = []
print(a)
[] #結果
b = list()
print(b)
[] #結果

list.append(x)

リストの末尾に要素を1つ追加する。
a[len(a):] = [x] と同等です。
和訳/ append : 追加

a = [3,2,1]
a.append(4)
print(a)
[3, 2, 1, 4] #結果

list.extend(iterable)

イテラブルの全要素をリストに追加し、リストを拡張する。
a[len(a):] = iterable と等価です。
和訳/ extend : 拡張する
イテラブルはリストやタプルなど反復可能オブジェクトのことを指します。

extendの例
a = [2,2,2]
b = [3,3,3]
a.extend(b)
print(a)
[2, 2, 2, 3, 3, 3] #結果

appendとの違い

appendは追加する、extendは拡張すると違いがあります。
apeendはイテラブルオブジェクトがそのまま追加されるので注意が必要。

appendで同じことをした時の違い
a = [2,2,2]
b = [3,3,3]
a.append(b)
print(a)
[2, 2, 2, [3, 3, 3]] #結果

list.insert(i, x)

指定した位置に要素を挿入する。
第一引数は挿入したい位置のリストのインデックス番号、第二引数は挿入する値。
a.insert(len(a), x)はappend(x)と同等です。
和訳/ insert : 挿入する、差し込む

a = [6,7,8]
a.insert(0,3) #インデックス0番目に3を差し込む
print(a)
[3, 6, 7, 8] #結果

list.remove(x)

リスト内の引数xと等しい値をもつ最初の要素を削除する。
リスト内にxが存在しない場合はValueErrorが発生する。
和訳/ remove : 削除する

a = [1,2,3,1]
a.remove(1)
print(a)
[2, 3, 1] #結果

list.pop([i])

引数で指定したインデックスの要素をリストから削除し、その要素を返します。引数を指定しなかったときは、リストの末尾の要素を削除し、その要素を返します。(removeは削除しても要素の値は返さない)
引数の[]はオプション引数であることを表します。オプションは引数を渡さなかった時の動きが決まっているので渡さなくても動作する。
和訳/ pop : はじける、飛び出る
ポップコーン(・_・)

a = [1,2,3,4,5]
a.pop(1) #リストのインデックス1番目を削除し、値を返す
2 #結果
print(a)
[1, 3, 4, 5] #インデックス1番目が消えてることを確認

a = [1,2,3]
a.pop() #オプション引数なので指定しなくてもOK、この場合末尾がはじける
3 #結果
print(a)
[1,2] #末尾が消えてることを確認

list.clear()

リスト内の全ての要素を削除する。引数は無し。
del a[:] と同等です。

a = [1,2,3]
a.clear()
print(a)
[] #結果

list.index(x,[start],[end])

リスト内でxと同じ値をもつ最初の要素の位置をインデックス番号で返す。該当する要素がないときはValueErrorが発生する。xは必須な引数で、[]に囲われているstartとendはオプション引数です。探索範囲をstartで開始位置、endで終了位置を指定できます。
和訳/ index : 索引、目盛り、指標

a = [5,6,7,8,9,10]
a.index(5)
0 #結果 5がある位置のインデックス番号が返ってくる。
a.index(9)
4 # 結果 9がある位置のインデックス番号が返ってくる。

a = [1,2,3,4,5,1]
a.index(1,2,6) #探索範囲を2以上6未満に設定して、1を探索。
5 #結果 探索範囲内の最初の1に対して値を返している。

list.count(x)

リスト内にxがいくつあるかを返す。
和訳/ count : 数える

a = [1,1,3,2,5,3,1,3]
a.count(1)
3 #結果
a.count(10)
0 #結果

list.sort(key=None, reverse=False)

リスト内をインプレース演算でソートする。インプレース演算とは元のデータを演算結果で置き換える方法です。
引数がイコールで表示されているものはデフォルト引数です。何も指定しなければデフォルトで設定されている値で動作します。

引数なしの場合

引数なしの場合はリスト内の要素が昇順されます。

引数なしの例
a = [5,6,3,5,1,2,9,0,4,3,2]
a.sort() #インプレース演算してるだけなので順番は変わるけど値は返さない。
print(a) #値返ってこないからprint関数で中身見るね。
[0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 9] #結果

keyオプションを指定する

keyオプションを使用すると、並び替えルールに様々な関数の処理を加えられる。例えば絶対値を表示するabs関数を指定して、絶対値による並び替え。値の長さを表示するlen関数を指定して、値の長さによる並び替え。大文字を小文字に変換するstr.lowerを使用して、小文字基準で並び替え。

このように関数の処理に応じた並び替えを指定することができる。関数を自作すれば意図した並び替えも可能かも知れない。ここでは絶対値を表示するabs関数を指定して使用例を見ていく。

keyを指定する例
a = [1,-4,3,66,-90,2,55]
a.sort(key=abs) #デフォルト引数keyにabs関数を与える
print(a)
[1, 2, 3, -4, 55, 66, -90] #結果

reverseオプションを指定する

reverseオプションは単純で指定できる値は、TrueとFalseのみ。
デフォルトがFalseで、Trueにすると逆順になります。

reverseを指定する例
a = [1,2,3,4,5]
a.sort(reverse = True)
print(a)
[5, 4, 3, 2, 1] #結果

sortメソッドの注意点

リスト内に数値や文字列が混在していると比較を行えずエラーになります。データ型が違うとエラーになると言うよりは、メソッド内で比較演算子を使用しているため、比較演算が可能なデータ型である必要があります。整数と少数のように違うデータ型でも比較演算できる型もあります。

list.reverse()

リスト内の要素をインプレース演算で逆順にします。

a = [1,2,3,4,5]
a.reverse()
print(a)
[5, 4, 3, 2, 1] #結果

list.copy()

リストの浅いコピーを返します。a[:]と同等です。

ちょっとしたあれこれ

removeとかsortとか戻り値が表示されないようなメソッドはpythonではNoneを返すみたいです。ただ原則でNoneは表示されないようになっているみたいで、戻り値はないように見えるそうです。
print()を使って無理やり、Noneを見てます。

a = [1,2,3]
print(a.sort())
None #結果

訓練用

メソッド名だけ見て「説明や使用」ができるかを確認用メモです。
append、extend、insert、remove、pop、clear、index、count、sort、reverse、copy

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?