Pythonのリスト(list)を詳細に解説・初学者が基礎からマスター

Python

「Python学習を始めたけれど、リスト(list)という機能がよく理解できていない…。Pythonのリストについて、基本から応用ができるまで丁寧に教えてほしい。」

本記事では、Pythonを始めて間もないあなたの「リスト」についての悩みを徹底的に解決します。

リストのイメージとしては「データが入った入れ物」のようなもの。
データが取り出しやすくなる、データを一括して扱えるようになる等、管理する上で大きなメリットがあります。

Python学習の土台と言えるほど重要で、学習を進めていけば様々な場面で登場します。

今のうちにリストの使い方をマスターしておくことは、これからの学習を効果的に進めるためにも必須なのです。

Pythonの「リスト」は「データ構造」の一種

リストは「データ構造」という、文字列や数値などのデータをまとめて扱う仕組みの一つです。
データをリストに整理してまとめることで、データの管理が非常に便利になります。

リストは最も基本的なデータ構造なので、自分で作ることも難しくありません。

ここでは、実際にリストを作る方法と基本的なルールについて見ていきます

基本的なリストを作る方法

リストは、値を[ ]に登録して作成します。
[ ]に登録された値が、リストの要素です。
値の数に制限はなく、複数の値を登録するときは半角カンマで区切ります。

【コード例】

listname = ['値1', '値2', '値3']
print(listname)

【出力結果】

[‘値1’, ‘値2’, ‘値3’]

このように、初めにリスト名を半角英数字で作成し、「=」で代入します。
代入されたリストを、print(listname)で出力しています。

リスト名をつける時に、実はいくつかのルールがあります。
他の「変数」や「関数」にも共通するものですが、このルールを守れていないと、リストは作成できません。

  • 半角英小文字で作成する
  • リスト名の1文字目に「数字」は使えない
  • 「予約語」という、Python言語ですでに意味が割り当てられている文字列は使えない

例として、1文字目を数字にした名前と予約語「import」でリストを作成しようとしましたが、下記のようにエラーが出ます。

【コード例】

2list = [1]
print(2list)

【出力結果】

File “test.py”, line 1
2list = [1]
^
SyntaxError: invalid syntax

【コード例】

import = [1]
print(import)

【出力結果】

File “test.py”, line 1
import = [1]
^
SyntaxError: invalid syntax

ちなみに、リストに入れる要素の型は統一する必要がありません。
例えば以下のように、「’文字列1’」と「’文字列2’」という文字列、「123」という数値が混ざっていても問題なく作成できます。

【コード例】

mixedlist = ['文字列1', 123, '文字列2']
print(mixedlist)

【出力結果】

[‘文字列1’, 123, ‘文字列2’]

「空のリスト」の使い方

要素を一つも持たない「空のリスト」と呼ばれるリストを作る事もできます。

【コード例】

emptylist = []

あえて空のリストを作るのは、後から値を追加していくための入れ物を先に作っておくことが目的です。

演算子を使うことで、リストを「連結」や「繰り返し」して出力できる

リストは、演算子によって要素を連結したり、繰り返すこともできます。

加算の演算子でリストを連結する方法

ここでは、「+(加算)」の演算子を用いることで、リスト2つの要素を合わせて出力しています。
このリストの要素は文字列ではなく数値ですが、「リストの要素」として扱われるので計算されるわけではありません。

【コード例】

numberlist_3 = [12, 45, 67] + [1, 3, 7]
print(numberlist_3) 

【出力結果】

[12, 45, 67, 1, 3, 7]

「複合代入演算子」でリストを連結する方法

また、「複合代入演算子」を使って連結することもできます。
複合代入演算子とは、演算を行った結果を元の変数に代入するような文を簡易化するためにある演算子です。

例えば、代表的な複合演算子として「+=」などがありますね。

a += bは a = a + b

の意味となります。

複合代入演算子を使わない例を見ていきましょう。

【コード例】

enzan = 3
enzan = 3 + 2
print(enzan)

【出力結果】

5
上記を「+=」を使って書くと

【コード例】

enzan = 3
enzan += 2
print(enzan)

【出力結果】

5

これは複合代入演算子の最も基本的な例です。
このように、「変数の内容を計算しなおして、もう一度同じ変数に代入する」手間をショートカットします。

この複合代入演算子のシステムは、リストでも使えます。

【コード例】

enzanlist = [1, 2, 3, 4, 5]

enzanlist_2 = [6, 7, 8]

enzanlist += enzanlist_2

print(enzanlist)

【出力結果】

[1, 2, 3, 4, 5, 6, 7, 8]

このように、リストに新たな値を追加して再度代入する手間を省けるのです。

乗算の演算子でリストを連結する方法

他にも、下記の例のように「*(乗算)」の演算子を用いれば、リストの要素を任意の回数くり返して出力させることができます。

【コード例】

numberlist = [0] * 10

print(numberlist)

【出力結果】

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

【コード例】

numberlist_2 = [1, 2, 3, 4, 5] * 5 
print(numberlist_2)

【出力結果】

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

「インデックス」機能でリストから要素を取り出す

次に、リストから任意の要素を取り出す方法について見ていきましょう。

ここでは、「インデックス」を利用して指定します。
リストでいうインデックスとは「リストの何番目の要素かを示す整数」のことです。

書式は次のようになります。

indexlist(←リスト名)[2(←インデックス)]

簡単に言うと、インデックスの整数を指定することで「リストの何番目の要素を取り出してくれ」という指示を送るのです。
注意が必要なのは、インデックスは最初の要素を「0」と数えることです。

「インデックス」でリストから要素を取り出す

それでは、実例を示します。

【コード例】

indexlist = ['要素1', '要素2', '要素3']
indexlist[2]
print(indexlist[2])

【出力結果】

要素3

リストの3番目の要素をインデックスで指定して「要素3」が出力されました。

インデックス「2」を指定したことで3番目の要素が取り出されています。

「スライス」でリストから特定の要素を取り出す

「スライス」機能を使えば、リストの中で特定の範囲を指定して要素を取り出すことができます。
「開始インデックス」と「終了インデックス」を指定して範囲を限定するのです。

書式はこのようになります。
slicelist(←リスト名) [0(←開始インデックス):(←コロン)3(←終了インデックス)]

注意が必要なのは、終了インデックスです。
取り出す要素は「終了インデックスの数字-1」までの要素とされています。
この例でも、リストの0番~2番目までの要素が取り出されています。

【コード例】

slicelist = [1, 2, 3, 4, 5, 6, 7, 8, 9]
slicelist[0:3]
print(slicelist[0:3])

【出力結果】

[1, 2, 3]

リストへの要素の追加・削除

ここからは作成済みのリストに要素を追加する方法と、その要素を変更する方法を見ていきます。

「appendメソッド」でリストの要素を追加する

リストに要素を追加する方法は、演算子を用いるものだけではありません。
「appendメソッド」を用いれば、より簡単にリストに要素を追加することができます。

書式はこちらです。
slicelist(←リスト名).(←ドット)append(’追加要素’(←追加したい要素))

【コード例】

slicelist = [1, 2, 3, 4, 5, 6, 7, 8, 9]
slicelist.append('追加要素')
print(slicelist)

【出力結果】

[1, 2, 3, 4, 5, 6, 7, 8, 9, ‘追加要素’]

ここでは、先ほど作ったリスト「slicelist」にappendメソッドで要素を追加しました。

「removeメソッド」でリストの要素を削除する

次に、リストから要素を削除する方法について見ていきます。
ここで用いるのは、「removeメソッド」です。

removeメソッドは、リストの中から指定した値を持つ一番最初の要素を削除します。
一番最初という条件付きなのは、一つのリストに同じ値の要素を複数入れることができるからです。

書式はこちらです。
slicelist(←リスト名).(←ドット)remove(’追加要素’(←削除したい要素))

【コード例】

slicelist = [1, 2, 3, 4, 5, 6, 7, 8, 9]
slicelist.append('追加要素')
slicelist.remove ('追加要素')
print(slicelist)

【出力結果】

[1, 2, 3, 4, 5, 6, 7, 8, 9]

こちらの例では、先ほど追加した「追加要素」という要素を削除しました。

「インデックス」機能でリストの要素を変更・要素を挿入する

次に、インデックスを用いてリストの要素を変更し、挿入する方法を見ていきます。

リストの要素を変更する

リストにおける特定の要素を違う値に入れ替えたいときには、まずインデックスでその値を指定します。

そして、新たに入れたい値を代入するだけです。

例えばここでは、3番目の「要素2」を「要素3」に変更しています。

【コード例】

change = ['要素1', '要素2', '要素2', '要素4']
print(change)

【出力結果】

[‘要素1’, ‘要素2’, ‘要素2’, ‘要素4’]

【コード例】

change = ['要素1', '要素2', '要素2', '要素4']
change[2] = '要素3'
print(change)

【出力結果】

[‘要素1’, ‘要素2’, ‘要素3’, ‘要素4’]

リストに要素を挿入する

次に、リストの途中に要素を挿入する方法です。
これまで見てきた要素を追加する方法では、特定の場所に入れることはできません。
しかし「insertメソッド」を使うことで、インデックスが示す位置に要素を挿入できるようになります。

この例では、先ほどの「change」リストのインデックス2に「挿入」の文字列を挿入しました。

書式はこちらです。
change(←リスト名).(←ドット)insert(2(←インデックス),’挿入’(←挿入したい値))

【コード例】

change = ['要素1', '要素2', '要素2', '要素4']
change[2] = '要素3'
change.insert(2, '挿入')
print(change)

【出力結果】

[‘要素1’, ‘要素2’, ‘挿入’, ‘要素3’, ‘要素4’]

リストと文字列を互換する方法

最後に少し応用編を見ていきます。
リストの要素で文字列を作る方法と、文字列を分割することでリストを作成する方法についてです。

リストの要素から文字列を作成する「joinメソッド」

リストの要素を使って文字列を作成するには、文字列のメソッド「joinメソッド」を使います。

joinメソッドは簡単に言うと、リストの要素を全て文字列として返してくれるメソッドです。
「区切りの文字列」を指定することで、要素の間全てに指定した区切りが挿入されます。

この場合は書式を入力してそのまま実行することで、リストの要素が文字列として出力されます。
print関数で出力すると、要素はリストとして表示されてしまうので注意してください。

書式はこちらです。
‘→’(←区切りの文字列).join(change(←リスト名))

【コード例】

change = ['要素1', '要素2', '要素2', '要素4']
change[2] = '要素3'
change.insert(2, '挿入')
changelist = '→'.join(change)
print(changelist)

【出力結果】

要素1→要素2→挿入→要素3→要素4

文字列を分割してリストを作成する「splitメソッド」

次は、文字列からリストを作成する方法です。
ここで用いる「splitメソッド」は、joinメソッドの逆の働きをします。

例として、先程changeリストから作った文字列をリストの形に戻しました。
分割したい文字列を、指定の文字列(この場合は「→」)で区切り、リスト化するという指示です。

書式はこちらです。
‘要素1→要素2→挿入→要素3→要素4’(←リストに分割したい文字列).(ドット)split(‘→’)(←区切りとして指定する文字列)

【コード例】

change = ['要素1', '要素2', '要素2', '要素4']
change[2] = '要素3'
change.insert(2, '挿入')
changelist = '→'.join(change)
changelist = '要素1→要素2→挿入→要素3→要素4'.split('→')
print(changelist)

【出力結果】

[‘要素1’, ‘要素2’, ‘挿入’, ‘要素3’, ‘要素4’]

まとめ

冒頭でも書いたように、Pythonにおいてリストは無くてはならない存在です。
趣味レベルの学習も、エンジニアとして活動していきたい場合でも、リストの学習は非常に重要といえます。

応用に進んでからリストの使い方で困ることがないよう、確実に習得しておくのがおすすめです。

コメント

タイトルとURLをコピーしました