この記事では、Pythonのリスト(list)の使い方を解説します。
リストは、要素の追加・変更・削除が行える汎用性が高いシーケンスの1つです。最もよく使用されるコレクションなのでしっかり学んでいきましょう。
それでは、リストの使い方を見ていきましょう❗️
リストとは?
リストとは、異なる型の値を任意の数だけ格納できるシーケンスです。ちなみに、格納されている値のことを「要素」と呼びます。
シーケンスとは、複数のデータを扱える型のことを言います。特徴的なのは格納された要素が順番を持つことです。もう少し詳しく知りたい方は以下の記事を参照してください。
リストは、インスタンス化した後でも要素の追加・削除・変更を行うことができます。そのような性質を持つオブジェクトを「ミュータブル」と呼びます。
要素を変更するためのメソッドが実装されているためタプルよりも処理は重めとなっています。
- 可変(ミュータブル)
- 同じ型の要素を格納することが多い
- 汎用性が高い
- シーケンス型である
リストの生成
リストを生成するには、[]
を使います。
変数 = []
リストのコンストラクタである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])
print(nums[1])
print(nums[2])
実行結果
1
2
3
範囲外のインデックスを指定した場合は、IndexError
が発生する。
nums = [1, 2, 3]
print(nums[4])
実行結果
Traceback (most recent call last):
File "/Users/user/Desktop/Python/main.py", line 3, in
print(nums[4])
IndexError: list index out of range
要素の変更
list[インデックス]
で変更したい要素にアクセスし、何かしらの値を代入することで任意の要素を書き換えることができます。
list[インデックス] = データ
試しに任意の要素を書き換えてみます。
array = ['one', 'two', 'three']
array[1] = 2
print(array)
実行結果
['one', 2, 'three']
要素の追加
append()
メソッドを使うことで要素を新たに追加できます。
nums = [1, 2, 3]
print(nums)
nums.append(100)
print(nums)
実行結果
[1, 2, 3]
[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]
要素の検索
in
演算子を使うことでリスト内に任意の要素が含まれているか判定できます。
nums = [1, 2, 3]
print(1 in nums)
print(4 in nums)
実行結果
True
False
長さの取得 [len関数]
len()
関数 を使うことでリストの長さを取得できます。
len(s)
試しにリストの長さを取得してみます。
nums = [1, 2, 3]
length = len(nums)
print(length)
実行結果
3
リスト内の文字列の結合
str
型 の join()
メソッド を使うことで引数に指定したリスト内の文字列同士を結合できます。リスト内に文字列以外が格納されている場合は TypeError
が発生します。
''.join(リスト)
文字列の部分を書き換えることで結合部の文字を指定できます。
'結合部の文字'.join(リスト)
試しに文字列を格納したリストを作成して、join()
メソッドで結合させてみます。
array = ['あ', 'い', 'う', 'え', 'お']
aiueo = ''.join(array)
print(aiueo)
array = ['090', '1234', '5678']
# 結合部の文字を「-」に指定
tel = '-'.join(array)
print(tel)
実行結果
あいうえお
090-1234-5678
リスト内包表記
リスト内包表記を使うことで高速にリストを生成できます。
内包表記は以下のように記述します。
[式 for 変数 in 反復可能オブジェクト]
内包表記内に if
文 を記述することもできます。if
文 を定義することで条件式が True
の要素のみが返されるようになります。
[式 for 変数 in 反復可能オブジェクト if 条件式]
試しに内包表記でリストを生成してみます。
l = [i for i in range(5)]
print(l)
l = [i*i for i in range(5)]
print(l)
l = [i for i in range(5) if i % 2 == 0]
print(l)
実行結果
[0, 1, 2, 3, 4]
[0, 1, 4, 9, 16]
[0, 2, 4]
任意の要素をまとめて削除する
filter()
関数とlambda(ラムダ)式
を組み合わせることで指定した要素をまとめて削除できます。第一引数には、bool
値を返す関数オブジェクトを指定します。
filter(関数オブジェクト, リスト)
filter()
関数の戻り値は、イテレーターオブジェクトなのでlist()
で変換します。
list(filter(関数オブジェクト, リスト))
試しに指定した要素を全て削除してみます。
array = ['削除', 'あ', '削除', 'い', 'う', '削除']
# elem != '削除' で削除する要素を指定
array = list(filter(lambda elem: elem != '削除', array))
print(array)
実行結果
['あ', 'い', 'う']
任意の要素のインデックスを全て取得
内包表記
と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のリストの使い方を解説しました。
リストにはたくさんのメソッドが実装されています。この量の内容を一度に覚えるのは難しいので徐々に慣れていきましょう!
リスト内に1種類の型のオブジェクトしか格納しない場合は、array
を使うとより軽量に扱うことができます。
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ