リストとは、複数のデータを1つのまとまりの中に入れて、管理できるものです。このように複数のデータを1つにまとめるデータ構造はコンテナと呼ばれており、リスト以外にもタプル、辞書、集合と呼ばれるものがあります。それぞれの特徴は以下の通りです。
リスト
複数のデータ(要素)を格納できる。各要素にはインデックスと呼ばれる番号が紐づけられており、そのインデックスで要素を指定することができる。リスト内の要素は変更可能。このように変更可能なことをミュータブル(mutable、日本語訳:変更可能な)という。
タプル
複数のデータ(要素)を格納できる。リストと同様、各要素にはインデックスと呼ばれる番号が紐づけられており、そのインデックスで要素を指定することができる。リストとの違いは、タプル内の要素は変更不可能という点がある。このように変更不可能なことをイミュータブル(immutable、日本語訳:変更不可能な)という。
辞書
複数のデータ(要素)を格納できる。キーと呼ばれるものと値と呼ばれるものが2つで1組として、格納される。リストやタプルのようにインデックスで紐づけられていない。その代わりにキーで値を指定することができる。
集合
数学の「集合」を表すことができる。各要素は重複しない。変更可能なミュータブルな型、変更不可能なイミュータブルな型、どちらもとることができる。
リストとタプルの違い
リストとタプルは似ていますが、リストは一度作成しても、内容の変更ができるミュータブル。タプルは一度作成したら、内容を変更できないイミュータブルなのが大きな違いです。ですので、一度作成しても、途中で要素を加えたり、削除したりなど変更したいものはリストで、一度作成したら内容に変更したくないもの(誤って変えてしまう可能性も0にしたいもの)はタプルで作成するのがよいと思います。
リストの作り方
リストの作り方には大きく分けて2つあります。
① [ ](角カッコ)で囲む
② list()関数を用いる
それぞれについて見ていきます。
[ ] (角カッコ)で囲んでリストを作る場合
作り方は簡単です。[](角カッコ)で囲むだけです。例として、変数animalsに色々な動物を格納したいと思います。
animals = ["monkey","crab","crocodile"]
print(animals)
【実行結果】
['monkey', 'crab', 'crocodile'][](角カッコ)で囲む事でリスト(animals)の中にmonkey、crab、crocodileの文字列を格納しました。
list()関数を用いてリストを作る場合
変数名 = list(引数)とコードを書きます。
文字列を引数とする場合
list()関数の引数を文字列にする場合、文字列の引数はひとつしか書けません。また、文字が1文字ずつに分解されて、1文字が1つの要素として、リストになります。
animals = list("monkey")
print(animals)
【実行結果】
['m', 'o', 'n', 'k', 'e', 'y']これを無理やり、引数に文字列を2つ以上入れようとすると、
animals = list("monkey","crab")
print(animals)
【エラーメッセージ】
TypeError: list expected at most 1 arguments, got 2「リストは多くても1つの引数です。2つ引数があります。」と怒られてしまいます。
list()関数の引数にタプルを用いると、複数の引数を一度にリストにすることができます。
animals = list(("monkey","crab","crocodile"))
print(animals)
【実行結果】
['monkey', 'crab', 'crocodile']
range()関数を引数にする場合
ここまでは文字列が要素になっていましたが、list()関数の引数にrange()関数を用いると数値を要素にしたリストを作成する事ができます。
numlists = list(range(1,5))
print(numlists)
【実行結果】
[1, 2, 3, 4]▼関連記事:【Python】range()関数の使い方
リストの要素を取り出す
続いて、リストの中にある要素を指定して、取り出したいと思います。指定する時はインデックスと呼ばれる数字を用いて要素を指定します。インデックスは前から順に「0から始まる」という点に注意が必要です。

では、実際にmonkey(要素0)を指定して取り出してみましょう。指定する時はリストが格納されている変数に[ ](角カッコ)をつけて、[ ]の中に要素のインデックス(番号)を入れればOKです(例:animals[0])
animals = ["monkey","crab","crocodile"]
print(animals[0])
【実行結果】
monkey要素2を取り出してみましょう。
animals = ["monkey","crab","crocodile"]
print(animals[2])
【実行結果】
crocodile-(マイナス)を使って要素を取り出す
要素の指定ですが、-(マイナス)を使って取り出すこともできます。この場合、-1がリスト内の一番後ろの要素、-2がリスト内の後ろから2番目、-3が…と続きます。
実際に例をみてみましょう。
animals = ["monkey","crab","crocodile"]
print(animals[-1])
print(animals[-2])
print(animals[-3])
【実行結果】
crocodile
crab
monkey‐1で要素を取り出すとリスト内の一番後ろの要素(crocodile)が、-2で要素を取り出すとリスト内の後ろから2番目の要素(crab)が、-3で要素を取り出すとリスト内の後ろから3番目の要素(monkey)が取り出されました。
存在しないインデックス値を指定した場合
存在しないインデックス値で要素を指定しようとした場合、エラーが返されます。
animals = ["monkey","crab","crocodile"]
print(animals[3])
【エラーメッセージ】
IndexError: list index out of range上記コードではインデックス値は0と1と2なので、3は存在しません。その為、インデックス値3を指定して要素を取り出そうとすると、エラーが返されました。
メッセージも「リストインデックスは範囲外ですよ~」と教えてくれています。

コメント