今回はPythonのlist型。言語によっては配列やArrayといった型がよく使用されますが、Pythonではこのlistが非常に使用頻度が高いです。
今回はその基礎的な作成方法と、各要素へのアクセス方法を解説していきます。
list型の新規作成
まずは実際にリストを作成していきます。
list = [1,2,3,4,5]
list2 = ["東京",2020,"オリンピック"]
empty_list = []
これで3つのリストが作成されました。リストを作成するにはまず角括弧"[]"で全体を囲み、その中に要素をカンマで区切って入れていきます。
Pythonやその他のスクリプト言語では2つ目のリストのように、文字列と整数といった型が異なる要素を1つのリストに含めることが可能になっています。
3つ目は要素の無い、空のリストです。これはこれで1つの値として成立しています。type関数で確かめてみると、
print(type(list)) #<class 'list'>
print(type(empty_list)) #<class 'list'>
どちらも同じlist型であることが分かります。
各要素へのアクセス
では作成したリストから要素を1つ取り出してみましょう。
print(list[0]) #1
print(list2[2]) #オリンピック
print(["香取","草薙","稲垣"][1]) #草薙
リストの各要素へアクセスするには、リストやlist型の変数に続けて角括弧、その中に要素が入っている番号を入れて呼び出します。
この番号をインデックス番号(または添え字)といいます。インデックス番号は要素が入っている順番に「0,1,2」と並んでいます。
ちょうど番号の付いた箱が並んでいるところをイメージすると分かりやすいのではないでしょうか。
インデックス番号を指定する場合には特に0から始まるという点に気を付けましょう。例えば3つしか要素が入っていないリストに対し、3番目を指定してしまうとこのようなエラーが現れます。
print(["香取","草薙","稲垣"][3])
#IndexError: list index out of range
最後から数えた番号で指定する
そうは言っても例えば要素数が多くなった場合、このエラーを避けるためにいちいち要素数を数えたりするのは面倒です。
そういった場合は「リストの最後から数えたインデックス番号」で要素を指定してみましょう。
list = [10,20,30,40,50,60,70,80]
print(list[-1]) #80
print(list[-4]) #50
インデックス番号に「-1」を指定することで、そのリストの最後の要素を指定することができ、同じようにマイナスを付けて数値を増やしていくと、「後ろから数えて○番目」といった表現が可能になります。
ちなみに「-0」を指定した場合は[0]を指定したときと同じ、リストの最初の要素が出てきます。
複数の要素を指定する
では「ここからここまで」を指定するにはどうすればいいでしょうか?
Pythonではリストの要素を複数指定することも簡単にできます。先ほどと同じリストを使用して確かめてみましょう。
list = [10,20,30,40,50,60,70,80]
print(list[1:4]) #[20, 30, 40]
2行目の[1:4]の部分ではコロンで2つの数値を区切り、「ここからここまで」と要素を複数指定しています。Pythonではこれをスライスと呼びます。
この場合リストの「1番目の要素~4番目の手前の要素」までを指定していることには注意です。つまり、0始まりで4番目の「50」はここには入りません。
番号を指定しないスライス
最後に数値を指定せず、「ここから最後まで」と「最初からここまで」を指定する方法です。
list = [10,20,30,40,50,60,70,80]
print(list[:3]) #[10, 20, 30]
print(list[3:]) #[40, 50, 60, 70, 80]
上記のコードでは、スライスの最初の数値、最後の数値がそれぞれ欠けています。エラーになるかと思いきや、これは正しいコードです。
list[:3]とした場合、始まりを指定していないので「最初から指定した手前の要素まで」、
list[3:]とした場合、終わりを指定していないので「指定した要素から最後まで」を意味します。
おさらい
少々ややこしい部分もありますが、このlist型は頻繁に使用する型なのでぜひ覚えておきたいところです。
- list型の作成は角括弧[]で要素全体を囲む。要素はカンマで区切る
- 空のリストも作成可能である
- 各要素の指定はインデックス番号を使用する
- インデックス番号は0から始まる
- ある範囲の複数要素を指定するにはスライスを使用する
- 指定されるのはスライスの右側の数値より1つ前の要素まで