この記事では、Pythonの配列(コレクション)の種類と特徴について解説します。
Pythonで配列と言えば大抵は「リスト(List)」のことを指します。
リストとは、複数の要素を順序付けして保存できるコンテナ型のデータ構造であり、異なるデータ型の要素を格納できる汎用性の高いオブジェクトです。
また、1つの変数で複数のオブジェクトを取り扱うことができるデータ型のことを総じて配列とかコレクションと呼ぶことがあります。
ここでは、後者の「1つの変数で複数のオブジェクトを取り扱うことができるデータ型」の種類と特徴について解説します。それでは、どんな配列が用意されているか見ていきましょう!
配列とは、1つの変数で複数のオブジェクトを管理できるデータ型のことを言います。例えば、以下のような複数のデータを配列で書き直してみましょう。
item1 = 'やくそう'
item2 = 'どくけしそう'
item3 = 'キメラのつばさ'
配列の1つであるリスト(list)
を使うことで以下のように複数のデータを1つの変数にまとめることができました。
items = ['やくそう', 'どくけしそう', 'キメラのつばさ']
このように、同じ用途で使用するようなデータは、配列を使って1つにまとめておいた方が管理がしやすくなります。また、for
文を使うことでまとめて処理することもできます。
items = ['やくそう', 'どくけしそう', 'キメラのつばさ']
for item in items:
print(item)
実行結果
やくそう
どくけしそう
キメラのつばさ
ただし、一口に配列と言ってもどれも様々な特徴を持っています。なのでこの記事では、Python に用意されている配列の種類と簡単な特徴を紹介していきます。
配列まわりで使われる用語には、紛らわしいものが結構あります。なので、ゴチャゴチャにならないように少し整理しておきましょう。
コレクション、コンテナ | 複数のデータを扱える型のこと。配列やスタック、キューなどが含まれる |
---|---|
要素 | 配列に格納されているデータのこと。 |
シーケンス | 複数のデータを順序付けて扱う型のこと。 |
インデックス(添字) | シーケンスの要素1つずつに割り振られた番号。 |
イテラブルオブジェクト | 反復可能なオブジェクト。for文で要素を1つずつ取り出せる。 |
イテレータ | イテラブルオブジェクトから生成されたオブジェクト。要素を1つずつ取り出せる。 |
シーケンスの使い方と特徴 |
イテラブルとイテレータについて |
Pythonが用意している基本的な配列は以下の通りです。
型名 | コンストラクタ | 初期化 | 特徴 |
---|---|---|---|
リスト | list() | l = [1, 2, 3] | 汎用性抜群 |
タプル | tuple() | t = (1, 2, 3) | 要素を追加・変更できない |
セット | set() | s = {1, 2, 3} | 集合 |
それでは、1つずつ配列の特徴と簡単な使い方を見ていきましょう!
リストは複数の要素を順序付けして格納できるコンテナ型のデータ構造であり、異なるデータ型の要素を一緒に格納できる汎用性の高いオブジェクトです。
要素の追加・変更・削除が可能で色々な場面で使われます。
簡単なコード
# リスト生成
l = []
# 要素の追加
l.append('hoge')
l.append('moge')
l.append('hage')
# 要素の削除
l.remove('hage')
# 要素を1つずつ出力
for element in l:
print(element)
実行結果
hoge
moge
タプルは、リストと同じように複数の要素を格納できるコンテナ型のデータ構造ですが、要素を追加・削除・変更することができないオブジェクトとなっています。
関数の戻り値として複数の要素を一時的に1つにまとめたい場合などでよく使われます。
簡単なコード
def func():
# タプルを用いることで複数の要素を返せる
return 1, 2, 3
# アンパックして受け取る
v1, v2, v3 = func()
# 出力
print(v1)
print(v2)
print(v3)
実行結果
1
2
3
セットは、要素の集合を表現するためのコンテナ型のデータ構造です。重複する要素を持たず、順序を持たないオブジェクトとなっています。要素の追加・変更・削除が可能です。
主に集合演算に使われたり、重複する要素を取り除くために使われます。
簡単なコード
vals1 = {1, 2, 3}
vals2 = {2, 3, 4}
# 和集合
print(vals1 | vals2) # {1, 2, 3, 4}
# 積集合
print(vals1 & vals2) # {2, 3}
# 差集合
print(vals1 - vals2) # {1}
# 対象差集合
print(vals1 ^ vals2) # {1, 4}
上記で紹介した配列の他にもPythonには1つの変数で複数のオブジェクトを扱えるデータ型がたくさん用意されています。その一部を紹介します。
辞書は、key
にvalue
を対応付けて管理する少し特殊なオブジェクトです。
key
にvalue
を対応付けるためインデックスからではなく、key
から要素にアクセスできます。このようなオブジェクトを「マップ」や「連想配列」と呼んだりします。
簡単なコード
# 辞書の生成
d = {}
# 要素の追加(dict[key] = value)
d['key1'] = 'value1'
d['key2'] = 'value2'
d['key3'] = 'value3'
# 要素の削除
del d['key3']
# 出力
print(d['key1'])
print(d['key2'])
実行結果
value1
value2
デックは、collections
モジュールに含まれるオブジェクトの1つで、複数の要素を扱えるコンテナ型ですが、リストよりも両端の要素を高速で追加、削除が行える特徴を持っています。
先頭、または末尾の要素を扱いたい場合に使われます。
簡単なコード
from collections import deque
# 初期化
d = deque([1, 2, 3])
print(d)
# 右側に要素を追加
d.append(0)
# 左側に要素を追加
d.appendleft(0)
print(d)
# 右側の要素を取り出す
r_item = d.pop()
# 左側の要素を取り出す
l_item = d.popleft()
print(d)
# 要素の削除
d.remove(1)
print(d)
実行結果
deque([1, 2, 3])
deque([0, 1, 2, 3, 0])
deque([1, 2, 3])
deque([2, 3])
アレイは、array
モジュールに含まれるオブジェクトの1つで、複数の要素を扱えるコンテナ型ですが、指定した型の要素しか扱えない特徴があります。
機能を制限することでC言語の配列に似たメモリ効率の良い配列として扱うことができます。
簡単なコード
from array import array
# アレイ初期化
a = array('b', [1, 2, 3])
print(a)
# 要素の追加
a.append(1)
print(a)
# 要素の削除
a.remove(2)
print(a)
# 要素を1つずつ出力
for element in a:
print(element)
実行結果
array('b', [1, 2, 3])
array('b', [1, 2, 3, 1])
array('b', [1, 3, 1])
1
3
1
この記事では、Pythonの配列の種類と簡単な使い方を解説しました。
配列を使うことで複数のデータをまとめて管理できるようになりました。配列はよく使うオブジェクトなのでしっかり覚えておいてください!
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ