Python

【Python】list(リスト)の使い方

この記事では、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を使うとより軽量に扱うことができます。

リストより効率が良いリストみたいな配列【array】

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ