この記事では、Pythonのリスト(list)の使い方を解説します。
リストとは、複数の要素を順序付けして格納できるコレクションの一種です。要素の追加・変更・削除が行え、汎用性が高いのでよく使用されるオブジェクトとなっています。
それでは、リストの使い方を見ていきましょう!
リストとは?
リストとは、異なる型のオブジェクトを格納できるミュータブルなシーケンスです。
リストは、要素を追加・変更・削除できる柔軟で汎用性が高いオブジェクトとなっています。ただし、要素を変更するためのメソッドなどが定義されているためタプルよりもメモリを消費します。
要素をあまり変更しない場合はタプルを使い、頻繁に変更を加えたい場合はリストを使いましょう。また、格納できる型を絞ることで軽量化したarrayというオブジェクトも用意されています。
リストの生成・初期化
リストを生成するには[]を使います。
変数 = []
リストのコンストラクタであるlist()を使っても生成できます
変数 = list()
[]内に要素を,(カンマ)で区切って記述することで初期値を指定できます。
変数名 = [要素1, 要素2, ..., 要素N]
適当なリストを作成し、出力してみます。
l1 = [] l2 = [1, 2, 3] print(l1) # [] print(l2) # [1, 2, 3]
リストの要素の取得
list[インデックス]で指定したインデックスの要素を取得できます。
nums = [1, 2, 3] print(nums[0]) # 1 print(nums[1]) # 2 print(nums[2]) # 3
範囲外のインデックスを指定した場合はIndexErrorが発生する。
nums = [1, 2, 3] print(nums[4])
実行結果
Traceback (most recent call last): File "/Users/user/Desktop/Python/main.py", line 2, in print(nums[4]) IndexError: list index out of range
また、リストはシーケンスなのでスライスを使って要素を取得できます。
l = [1, 2, 3, 4, 5] l[0:2] # [1, 2] l[2:4] # [3, 4] l[1:-1] # [2, 3, 4] l[3:len(l)] # [4, 5]
リストの要素の変更
list[インデックス]で変更したい要素にアクセスし、何かしらの値を代入することで任意のインデックスの要素を書き換えることができます。
list[インデックス] = 値
試しに任意の要素を書き換えてみます。
l = ['one', 'two', 'three'] l[1] = 2 print(array) # ['one', 2, 'three']
リストの要素の追加
append()メソッドを使うことで要素を新たに追加できます。
nums = [1, 2, 3] print(nums) # [1, 2, 3] nums.append(100) print(nums) # [1, 2, 3, 100]
リストの要素の削除
remove()メソッドを使うことで任意の要素を削除できます。
nums = [1, 2, 3, 1] nums.remove(1) print(nums) # [2, 3, 1]
リストの要素の並び替え
sortメソッドを使うことでリストの要素を並び替えることができます。
nums = [3, 1, 2] nums.sort() print(nums) # [1, 2, 3]
長さの取得 [len関数]
len()関数を使うことでリストの長さを取得できます。
len(s)
リストの長さを取得してみます。
nums = [1, 2, 3] length = len(nums) print(length) # 3
リストの演算(連結、繰り返し、検索)
リストは+演算子を使って他のリストと連結することができます。
l1 = [1, 2, 3] l2 = ['a', 'b'] # 連結 l3 = l1 + l2 # 代入演算も可能 l2 += l1 print(l3) # [1, 2, 3, 'a', 'b'] print(l2) # ['a', 'b', 1, 2, 3]
リスト * 整数で指定した整数の数だけ繰り返すことが可能。
l = [1, 2] * 2 print(l) # [1, 2, 1, 2] # 代入演算も可能 l *= 2 print(l) # [1, 2, 1, 2, 1, 2, 1, 2]
また、in演算子を使うことでリストに任意の要素が含まれているか判定することができます。
nums = [1, 2, 3] print(1 in nums) # True print(4 in nums) # False
内包表記
内包表記を使うことでリストを高速に生成できます。リスト内包表記は以下のように記述します。
[式 for 変数 in 反復可能オブジェクト]
内包表記内にif文を記述することもできます。if文を定義することで条件式がTrueの要素のみが返されるようになります。
[式 for 変数 in 反復可能オブジェクト if 条件式]
内包表記を使ってリストを生成してみます。
l = [i for i in range(5)] print(l) # [0, 1, 2, 3, 4] l = [i*i for i in range(5)] print(l) # [0, 1, 4, 9, 16] # 偶数の値のみを返す l = [i for i in range(5) if i % 2 == 0] print(l) # [0, 2, 4]
二次元配列
リスト内にリストを格納することで多次元のリストを扱うことができます。以下のコードでは二次元配列を生成し、それぞれの要素を取得しています。
l = [[1, 2, 3], [4, 5, 6]] l[0] # [1, 2, 3] l[0][0] # 1 l[0][1] # 2 l[0][2] # 3 l[1] # [4, 5, 6] l[1][0] # 4 l[1][1] # 5 l[1][2] # 6
応用
リストの少し応用した使い方を紹介します。
格納された文字列の結合
str型のjoin()メソッドを使うことで引数に指定したリストに格納されている文字列を結合できます。リストに文字列以外の要素が格納されている場合はTypeErrorが発生します。
''.join(リスト)
文字列の部分を書き換えることで結合部の文字を指定できます。
'結合部の文字'.join(リスト)
試しに文字列を格納したリストを作成して、join()メソッドで結合させてみます。
l = ['あ', 'い', 'う', 'え', 'お'] aiueo = ''.join(l) print(aiueo) # あいうえお l = ['090', '1234', '5678'] # 結合部の文字を「-」に指定 tel = '-'.join(l) print(tel) # 090-1234-5678
任意の要素をまとめて削除する
filter()関数とlambda(ラムダ)式を組み合わせることで指定した要素をまとめて削除できます。第一引数には、bool値を返す関数オブジェクトを指定します。
filter(関数オブジェクト, リスト)
filter()関数の戻り値は、イテレーターオブジェクトなのでlist()で変換します。
list(filter(関数オブジェクト, リスト))
試しに指定した要素を全て削除してみます。
l = ['削除', 'あ', '削除', 'い', 'う', '削除'] # elem != '削除' で削除する要素を指定 l = list(filter(lambda elem: elem != '削除', l)) print(l) # ['あ', 'い', 'う']
任意の要素のインデックスを全て取得
内包表記とenumrate()関数を組み合わせることで指定した要素のインデックスを全て取得できます。以下のコードは、リストに格納されている「1」のインデックスを全て取得しています。
array = [1, 2, 3, 1, 2, 3, 1, 2, 3] # if v == 1 で要素を指定 idx = [i for i, v in enumerate(array) if v == 1] print(idx) # [0, 3, 6]
まとめ
この記事では、Pythonのリストの使い方を解説しました。
リストは汎用性が高いのでたくさんのメソッドが実装されています。一度に覚えるのは難しいので使いながら徐々に慣れていきましょう!
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ
- リスト型(list) — Python ドキュメント


