Pythonの数あるデータ型の中でもlist型は非常に使用頻度も高く、操作や使用できるメソッドが多岐にわたります。
今回はそんなPythonのlist型で可能な操作やメソッドを逆引き形式でまとめてみました。
リファレンス用のために詳細な説明は省いていますが、使用例をご覧いただくと大まかな使い方は把握できるかと思います。
list型を新規作成する/list型に変換する
[値1,値2,…]
lst1 = []
lst2 = [1,2,3,4,5]
print(lst1) #[]
print(lst2) #[1,2,3,4,5]
最も一般的な形。
[値]*n
lst = [0]*5
print(lst) #[0, 0, 0, 0, 0]
同じ要素を繰り返しリストに投げ入れる。
list(iterable)
lst1 = list()
lst2 = list("Hello")
print(lst1) #[]
print(lst2) #['H', 'e', 'l', 'l', 'o']
引数が無ければ空のリストを作成。文字列は1文字を1要素として作成される。
lst = list({"JoJo","ONE PIECE","KINGDOM"})
print(lst) #['ONE PIECE', 'KINGDOM', 'JoJo']
Setを渡した場合、要素の順番はランダムに決定される。
lst = list({1:"JoJo",2:"ONE PIECE",3:"KINGDOM"}.items())
print(lst) #[(1, 'JoJo'), (2, 'ONE PIECE'), (3, 'KINGDOM')]
dict(辞書)型の場合、
- 後ろに何も記述しない状態だとキーのみ
- values()を記述すると値のみ
- items()を記述すると、キー/値両方を含んだtupleを1要素とするリストを作成。
list(range(開始,終了,step))
lst = list(range(3,10))
lst2 = list(range(0,10,2))
print(lst) #[3, 4, 5, 6, 7, 8, 9]
print(lst2) #[0, 2, 4, 6, 8]
「ここからここ(の手前)まで」をリストに追加する。終了とstepは省略可。
listの要素数を取得
len(list)
lst = [1,2,3,4,5,6,7,8,9,10]
print(len(lst)) #10
list型に限らず、要素数や文字数を調べるlen関数。list型では要素数を調べる。戻り値はInt型。
ある要素のインデックス番号を取得
list.index(値)
lst = ["America","Japan","Korea","Japan"]
print(lst.index("Japan")) #1
値が重複している場合、初めて合致するインデックス番号のみを返す。
listに要素を追加/挿入する
append(値)
lst = [1,2,3]
lst.append(4)
print(lst) #[1, 2, 3, 4]
引数として指定した値を末尾に追加。
lst1 = [1,2,3]
lst2 = [10,20,30]
lst1.append(lst2)
print(lst1) #[1, 2, 3, [10, 20, 30]]
文字列やリストなどのiterableオブジェクトを引数とした場合、そのオブジェクトをそのままリストの末尾の要素として組み込み、二次元配列を作成。
insert(n,値)
lst = [4,5,6]
lst.insert(1,"five")
print(lst) #[4, 'five', 5, 6]
インデックス番号で指定した位置に値を挿入。
lst1 = [4,5,6]
lst2 = "HOKA ONE ONE"
lst1.insert(2,lst2)
print(lst1) #[4, 5, 'HOKA ONE ONE', 6]
iterableオブジェクトを渡した場合の挙動はappend()と同様。
+演算子
lst = ["Python","Java","PHP"]
lst = lst+["Ruby"]
lst += ["Kotlin","VBA"]+["Swift"]
print(lst) #['Python', 'Java', 'PHP', 'Ruby', 'Kotlin', 'VBA', 'Swift']
iterableオブジェクトであれば+演算子でも追加可能。extend()と同じ挙動だが、複数のオブジェクトをまとめて追加できる。
lst = ["Python","Java","PHP"]
lst += "Ruby"
print(lst) #['Python', 'Java', 'PHP', 'R', 'u', 'b', 'y']
これはあるある。
ある要素を別の値に入れ替える
list[n] = 値
lst = [1,2,3]
lst[0] = 38
print(lst) #[38, 2, 3]
要素を削除する
pop(n)
lst = ["夫","妻","息子","娘"]
x = lst.pop(0)
print(lst) #['妻', '息子', '娘']
print(x) #夫
引数で指定した場所にある要素を削除。削除された要素を戻り値として返す。
引数が無い場合、末尾の値を削除する。
remove(値)
lst = ["男","男","女","女","男","女","男","女"]
lst.remove("男")
print(lst) #['男', '女', '女', '男', '女', '男', '女']
引数として指定した値がリストに入っていれば、その最初の値のみを削除。
lst = ["男","男","女","女","男","女","男","女"]
while "男" in lst:
lst.remove("男")
print(lst) #['女', '女', '女', '女']
一気に削除したい場合、whileループなどで処理してしまうのが手っ取り早い。
del list[index]
lst = ["サーモン","わさび","シャリ"]
del lst[1]
print(lst) #['サーモン', 'シャリ']
メソッドではなくdel文。指定したインデックス番号に対応する値を削除する。スライスで複数要素にも対応。
clear()
lst = [1,2,3,4,5]
lst.clear()
print(lst) #[]
呼び出し元のリストから全ての要素を削除し、空のリストにする。
list同士を結合する
extend(list)
lst1 = ["apple","orange","grape"]
lst2 = ["pear","banana"]
lst1.extend(lst2)
print(lst1) #['apple', 'orange', 'grape', 'pear', 'banana']
呼び出し元に引数のiterableオブジェクトを組み込む。+=演算子などでも同じ挙動。
リストのままリストの中に組み込みたい場合は、append()やinsert()を使用する。
要素(文字列)同士を結合する
str.join(list)
lst = ["H","e","l","l","o"]
a = "".join(lst)
b = "-".join(lst)
print(a) #Hello
print(b) #H-e-l-l-o
print(lst) #["H","e","l","l","o"]
list型ではなくstr型のjoinメソッド。メソッドの呼び出し元はセパレータの文字列。
引数にリストを入れることで、リスト内の1つ1つの要素を結合する。数値には対応していない。
このメソッドは元のリストを変更しない。
要素を並び替える
sort()
lst = [10,3,9,80,5]
lst.sort(reverse=True)
print(lst) #[80, 10, 9, 5, 3]
リストの要素を並べ替え、元のリストを書き換える。メソッドの戻り値はNone。
引数を省略すると昇順、reverse=Trueとすると降順で並べ替える。
文字列でも可能だが、数値と文字列混合のリストはエラーになる。
sorted(list)
lst = [10,3,9,80,5]
print(sorted(lst)) #[3, 5, 9, 10, 80]
print(sorted(lst,reverse=True)) #[80, 10, 9, 5, 3]
print(lst) #[10, 3, 9, 80, 5]
メソッドではなくPythonの組み込み関数。元のリストは書き換えない。
逆順にする場合は第2引数にreverse=Trueを記述する。