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】

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