LoginSignup
3
6

More than 5 years have passed since last update.

Pythonの組み込みデータ構造

Last updated at Posted at 2018-06-29

Pythonには4つの組み込みデータ構造があります。
1. リスト
2. 辞書
3. 集合
4. タプル

これらについて簡単にまとめます。もし誤り等あればご指摘いただけると幸いです。
(より正確かつ詳しい内容はPython公式ドキュメントを参照してください。)

リスト

リストは「オブジェクトの順序付き可変コレクション」です。
順序付きというのは、リスト内の各データにインデックスがついているということ、
可変というのは、拡張や縮小ができるということです。

基本的な操作

作成:data = []list()
データ入力:data = [1, 2, 3]
データ出力:data[index]
拡張:data.append()data.insert()data.extend()
縮小:data.remove()data.pop()
削除:data.clear()

>>> alphabet = ['a', 'b', 'c']    # リストを定義

>>> type(alphabet)    # 型を確認
<class 'list'>

>>> alphabet.append('e')    # alphabetの要素に'e'を追加
>>> alphabet
['a', 'b', 'c', 'e']

>>> alphabet.insert(3, 'd')    # インデックス3の位置に'd'を追加
>>> alphabet
['a', 'b', 'c', 'd', 'e']

>>> alphabet.pop()    # リストの末尾の要素を削除して返す
'e'
>>> alphabet
['a', 'b', 'c', 'd']

辞書

辞書は「キーと値のペアの順序なし可変コレクション」です。
キーは辞書内で一意であり、順序はありません。

基本的な操作

作成:data = {}dict()
データ入力:data = {key1:value1, key2:value2, key3:value3}
データ入力:data = dict(key1=value1, key2=value2, key3=value3)
データ出力:data[key]
拡張:data[key] = valuedata.setdefault(key, value)
縮小:data.pop(key)data.popitem()
削除:data.clear()


>>> fruits = {'apple':100, 'banana':120, 'cherry':200}    # 辞書を定義

>>> type(fruits)    # 型を確認
<class 'dict'>

>>> fruits['apple']    # キーが'apple'の値を返す
100

>>> fruits['durian'] = 300    # キーが'durian'、値が300のペアを追加
>>> fruits
{'apple': 100, 'banana': 120, 'cherry': 200, 'durian': 300}

>>> fruits.setdefault('fig', 500)    # キーが'fig'、値が500のペアを追加し、その値を返す
500
>>> fruits
{'apple': 100, 'banana': 120, 'cherry': 200, 'durian': 300, 'fig': 500}

>>> fruits.setdefault('banana', 150)    # setdefaultメソッドで指定したキーが既にある場合は変更や追加はせず、指定したキーの値を返す
120
>>> fruits
{'apple': 100, 'banana': 120, 'cherry': 200, 'durian': 300, 'fig': 500}

>>> fruits.pop('cherry')    # キーが'cherry'のキーと値のペアを削除し、その値を返す
200
>>> fruits
{'apple': 100, 'banana': 120, 'durian': 300, 'fig': 500}

>>> fruits.items()    # 辞書のキーと値のペアを返す。ループ処理でよく使う。
dict_items([('apple', 100), ('banana', 120), ('durian', 300), ('fig', 500)])

>>> sorted(fruits.values())    # 辞書の値をソートして返す
[100, 120, 300, 500]

集合

集合は「重複のないオブジェクトの順序なし可変コレクション」です。
重複のないとはその言葉通り、重複値を禁止しています。
集合の和、積、差などの数学的な演算が可能です。
検索が主な目的である場合は、集合の方がリストに比べて高速です。

基本的な操作

作成:data = set()
データ入力:data = {'a', 'b', 'c'}
拡張:data.add()
縮小:data.remove()data.pop()
削除:data.clear()

>>> vowels = set('aeeiiioooouuuuu')    # set関数で集合を定義
>>> vowels
{'i', 'e', 'u', 'o', 'a'}

>>> type(vowels)     # 型を確認
<class 'set'>

>>> word = 'python'
>>> u = vowels.union(set(word))    # 集合vowelsとwordを集合にしたものとの和集合を取る
>>> u
{'n', 'i', 't', 'e', 'u', 'y', 'o', 'h', 'p', 'a'}

>>> sorted(u)    # ソートして返すことも可能
['a', 'e', 'h', 'i', 'n', 'o', 'p', 't', 'u', 'y']

>>> d = vowels.difference(set(word))    # 集合vowelsとwordを集合にしたものとの差集合を取る
>>> d
{'i', 'u', 'a', 'e'}

>>> i = vowels.intersection(set(word))    # 集合vowelsとwordを集合にしたものとの積集合を取る
>>> i
{'o'}

タプル

タプルは「オブジェクトの順序付き不変コレクション」です。
一度タプルにオブジェクトを割り当てたら、そのタプルは変更できません
オブジェクトを自分(や他の人)が書いたコードで変更できないようにしたい場合に使います。

基本的な操作

作成:data = ()tuple()
データ入力:data = ('a', 'e', 'i', 'o', 'u')
データ出力:data[index]
削除:del data

>>> vowels = ('a', 'e', 'i', 'o', 'u')    # タプルを定義(母音のデータなど、変更が起こりえないものはタプルが適している)
>>> vowels
('a', 'e', 'i', 'o', 'u')

>>> type(vowels)    # 型を確認
<class 'tuple'>

>>> vowels[2]
'i'

>>> t = ('Python',)    # 要素が1つだけのタプルを定義する場合は最後にカンマが必要
>>> type(t)
<class 'tuple'>
>>> t
('Python',)

>>> t2 = ('Python')    # カンマがないと文字列として定義される
>>> type(t)
<class 'str'>
>>> t
'Python'

その他

Pythonは上記のデータ構造を組み合わせた複合データ構造も扱えます。
例えば「リストの集合」や「辞書のタプル」などです。
以下に「辞書を含む辞書」の例を示します。

>>> score = {}
>>> score['Alice'] = {'math':80, 'science':90, 'history':70}
>>> score
{'Alice': {'math': 80, 'science': 90, 'history': 70}}

参考文献

3
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6