Pythonで配列を使いたいけど、エラーメッセージばっかり出てしまう。
リスト、タプル、集合、辞書? C言語にはない用語がある上に使い方が良く分からない。
本記事では、そんな悩みを解決します。
リスト、タプル、集合、辞書について、要素の追加、変更、削除など基本的な使い方を解説していきます。
この記事はこんな人におすすめ!
- Pythonの配列が分からない人
- Pythonを学習している人
データ構造の種類
Pythonには4種類のデータ構造があります。それぞれの表記、特徴は下記表のとおりです。
種類 | 表記 | 変更 | 特徴 |
リスト | [‘A’, ‘B’, … ] | 可能 | 一般的な配列 |
タプル | (‘A’, ‘B’, …) | 不可 | リストに比べて高速 |
集合 | {‘A’, ‘B’, …} | 可能 | 同じ値を重複して格納できない |
辞書 | {1:’A’, 2:’B’, …} | 可能 | 検索がリスト、タプルより高速 |
リストの使い方
リストは一般的な配列です。
リストの作成、要素の追加・削除・挿入・ソート方法をマスターしましょう!
リストの作成
リストを作成するには、要素をカンマで区切り、[ ]で囲みます。
x = ['a', 'b', 'c']
要素の追加
要素を追加する方法はいくつかあります。自分に合った方法を使えるようにしましょう。他人が書いたコードを理解するためには、全部覚えておいた方が良いです。
x += ['d']
x.append('d')
x.extend('d')
どれも x に ‘d’ が追加される結果となります。
% 実行結果
['a', 'b', 'c', 'd']
要素の削除
要素を削除する方法も複数あります。
del x[1]
x.pop(1)
リストの要素は0から始まりますので、1を指定すると’b’が削除されます。
% 実行結果
['a', 'c', 'd']
要素の挿入
要素を所定の位置に挿入するには、insertを使います。第1引数にインデックス、第2引数に値を指定します。
x.insert(1, 'f')
2番目の要素に’f’が追加されました。
% 実行結果
['a', 'f', 'c', 'd']
ソート
要素を昇順に並べるには、sort関数を使います。
x.sort()
アルファベット順に並べることが出来ます。
% 実行結果
['a', 'c', 'd', 'f']
降順に並べるには、引数にreverse=Trueと記述します。
x.sort(reverse=True)
降順に並びます。
% 実行結果
['f', 'd', 'c', 'a']

タプルの使い方
タプルは変更不可のデータ構造のため、リストのように要素の追加、削除、挿入は出来ないです。そのため、タプルに関する関数はほぼないです。内容を変更する必要のないときに使用しましょう。
タプルの作成
タプルを作成するには、要素をカンマで区切り、( )で囲みます。
x = ('a', 'b', 'c')
集合の使い方
集合は指定した値が含まれているか判定する場合に使います。
集合の作成
集合を作成するには、要素をカンマで区切り、{ }で囲みます。
x = {'a', 'b', 'c'}
x = {'a', 'a', 'c'}
値が重複した集合を作成しようとすると
% 実行結果
{'a', 'c'}
となります。
もし、空集合を作成したいときはset関数を使えばよいです。
x = set()
要素の追加
以下は集合の要素を追加する方法です。
x.add('d')
x |= {'d'}
’d’が追加されますが、最後尾の要素にはならなく順不同となります。
% 実行結果
{'d', 'a', 'c', 'b'}
要素の削除
集合の要素を削除する方法もいくつかあります。
x.remove('a')
x.discard('a')
x -= {'a'}
これらを実行するとaが集合から削除されます。
% 実行結果
{'d', 'c', 'b'}
集合を全削除するにはclear関数を使いましょう。
x.clear()
これを実行するとxは空集合になりましたね。
% 実行結果
set()
値が含まれるか判定
集合は指定の値が含まれているか判定できることが特徴です。判定にはinとnot inを使います。
fruitsという集合を用意し、’banana’がfruitsに含まれているか判定してみます。
fruits = {'banana', 'apple', 'strawberry'}
'banana' in fruits
‘banana’はfruitsに含まれていますのでTrueが返ってきます。
% 実行結果
True
次にある値が集合に含まれていないか判定してみます。’melon’がfruitsに含まれてないか判定してみると
'melon' not in fruits
‘melon’はfruitsに含まれていないのでTrueが返ってきますね。
%実行結果
True
集合の演算
集合は、複数の集合から新しい集合を作り出すことができます。
集合x, yを次のように定義し、新しい集合を演算してみます。
x = {'a', 'b', 'c'}
y = {'b', 'c', 'd'}
集合の演算は下表のものがあります。実行結果も示しました。
演算 | 説明 | 実行結果 |
---|---|---|
x | y | 和集合: 集合xまたは集合yに含まれる要素の集合 | {‘b’, ‘c’, ‘a’, ‘d’} |
x & y | 積集合: 集合xかつ集合yに含まれる要素の集合 | {‘c’, ‘b’} |
x – y | 差集合: 集合xから集合yに含まれる要素を削除した集合 | {‘a’} |
x ^ y | 対称差: 集合xまたは集合yの片方に含まれる要素の集合 | {‘a’, ‘d’} |
辞書の使い方
辞書はキーと値の組み合わせを格納出来るデータ構造です。使用用途は実際の辞書とほとんど同じです。
国語辞典を例にして説明すると、キーは用語、値は意味に相当します。
キーは重複して格納することが出来ません。2つの同じ用語が含まれる国語辞典なんて存在しませんよね。どちらの意味が正しいか混乱してしまいます。
値は重複しても問題ないです。「登山」、「山登り」など用語は違うが、意味が同じ同義語が存在しますよね。値の重複が許されないと同義語を表現することが出来ません。
国語辞典は用語を検索し、意味を調べます。この使い方と同様、辞書はキーを検索し、そのキーに対応する値を取得することが出来ます。
辞書の作成
辞書を作成するには、集合と同様、要素をカンマ(,)で区切り、{ }で囲みます。要素はキーと値をコロン(:)で区切りましょう。
fruits_dict = {'banana': 'バナナ', 'apple': 'りんご', 'strawberry': 'いちご'}
要素の追加
辞書への要素追加です。[ ]内にはキーを指定。値はx[‘キー’]に代入します。
fruits_dict['melon'] = 'メロン'
‘メロン’が追加されます。
% 実行結果
{'banana': 'バナナ', 'apple': 'りんご', 'strawberry': 'いちご', 'melon': 'メロン'}
要素の削除
要素の削除は次の方法があります。
del fruits_dict['melon']
fruits_dict.pop('melon')
メロンのキーと値を削除できます。
% 実行結果
{'banana': 'バナナ', 'apple': 'りんご', 'strawberry': 'いちご'}
要素の取得
値の取得
キーを検索し、このキーに対応する値を取得する方法です。
fruits_dict['apple']
fruits_dict.get('apple')
キー’apple’に対応する値’りんご’が取得できます。
% 実行結果
'りんご'
キー一覧の取得
キー一覧を取得するには
fruits_dict.keys()
% 実行結果
dict_keys(['banana', 'apple', 'strawberry'])
値一覧の取得
値一覧を取得するには
fruits_dict.values()
% 実行結果
dict_values(['バナナ', 'りんご', 'いちご'])
ソート
辞書をソート(並び替え)するにはsorted関数を使います。キーでソートする方法、値でソートする方法を説明します。
キーでソート
sorted(fruits_dict.items())
キーをアルファベット順に並べることができます。
% 実行結果
[('apple', 'りんご'), ('banana', 'バナナ'), ('strawberry', 'いちご')]
値でソート
sorted(fruits_dict.items(), key=lambda x:x[1])
値を昇順に並び替えることが出来ます。
% 実行結果
[('strawberry', 'いちご'), ('apple', 'りんご'), ('banana', 'バナナ')]
まとめ
リスト、タプル、集合、辞書について、要素の追加、変更、削除など基本的な使い方を解説しました。
私がPythonを学習し始めたとき、ベース知識はC言語でした。そのため、リスト、タプル、集合、辞書といった分からない用語が突然出てきて混乱しました。
今回の記事が皆さんのPython学習に役立つなら幸いです。
独りでPython学習するのは大変だなと思う方は、書籍やスクールを活用するのも手です。
最後までお読み頂きありがとうございました!