【Day6】Python入門 2.5:コンテナの応用

目次

要約

本日は、Pythonで以下を学びました。

コンテナの相互変換・ネスト

関数説明
list 関数渡されたものをリストに変換
tuple 関数渡されたものをタプルに変換
set 関数渡されたものをセットに変換

ディクショナリはキーと値の2種類の情報をペアで管理すつコンテナのため、単一のリストやセットからは変換できません。

コンテナには、文字列や数値のデータ以外に、コンテナ自体を格納することもできます。

集合演算

セットだけが集合演算を利用できる。


はじめに

前回は「タプルとセット」について学びました。

​今回は、コンテナの応用について学習します。


コンテナの応用

コンテナの相互変換

データの性質や使い方に合わせて、4つのコンテナを使い分けることを学んできました。

ただ、本格的なプログラムの開発では、コンテナの使い分けもさることながら、

プログラムの実行中に異なる種類のコンテナへと変換する必要に迫られる場面も多くあります。

そこで、Pythonでは、各コンテナ間での相互変換を可能にするために以下のような関数を準備しています。

いずれも、関数名(~)の形で呼び出すことができ、引き渡したコンテナを目的のコンテナに変換してくれます。

関数説明
list 関数渡されたものをリストに変換する※1
tuple 関数渡されたものをタプルに変換する※1
set 関数渡されたものをセットに変換する※2

※1 順序関係がないセットから変換すると順序は保証されない
※2 重複が許されるリストやタプルからは、重複が排除される。

なお、list()のように、カッコに何も指定せずにこれらの関数を呼び出すと、空のコンテナを作成できます

また、これらの関数にディクショナリを渡すとキーだけが使われます

もしディクショナリの値を使ってリストやタプルに変換したい場合は、ディクショナリ.value()の結果を関数に渡すようにします。

ディクショナリへの変換

ディクショナリへの変換は少し複雑です。

ディクショナリはキーと値の2種類の情報をペアで管理すつコンテナのため、単一のリストやセットからは変換できません。

キーを格納したリスト」「値を格納したリスト」の2つが存在する場合、

dict(zip(キーのリスト , 値のリスト))とすれば1つのディクショナリに変換できます

例文を使って、コンテナの相互変換を行っていきましょう。

#コンテナの相互変換を行ってみます
scores = {'network' :60 , 'database' :80 , 'security' :60}
license = ['看護師' , '保健師' , '医療情報技師' , '第1種滅菌技師']
print(tuple(license)) #リスト資格をタプルに変換して表示
print(list(scores)) #scoresのキーをリストに変換して表示
print(set(scores.values())) #scoresの値をセットに変換して表示

コンテナの変換時のクセを理解した上で使用すると色々できそうですね!


コンテナのネスト

コンテナには、文字列や数値のデータ以外に、コンテナ自体を格納することもできます。

また、リストの中にリストを入れた構造は2次元リストともいわれ、表の構造を持つデータ管理などに使われています

例文を使って、2次元リストをイメージしていきましょう。

#2次元リストの例
a = [1, 2, 3]
b = [4, 5, 6]
c = [a ,b] #aを0番目、bを1番目とする2次元リストcを定義

print(c) #リストc全体を参照
print(c[0]) #リストcの0番目(リストa)だけを参照
print(c[1][2]) #リストcの1番目(リストb)の2番目だけを参照

二重構造だけでなく、三重構造以上のコンテナも作ることができます。

このような多重構造をネスト入れ子といいます。

コンテナのネストは覚えておくと便利そうですね!


集合演算

セットは順序関係がなく、重複も許されず、添え字もキーもないため要素を指定して値を出し入れできません。

しかし、セットだけができる特別な機能が集合演算です

集合演算とは、ある2つのデータの集まりについて、「共通点」や「違い」を探す処理のことです。

Pythonでは、2つのセットの共通項を求める道具として、&演算子があります。

セットの共通項を求める

セット1 & セット2

※セット1とセット2の両方に含まれる要素からなるセットに評価される。

2つのセットの共通項として求められたセットのことを、数学の世界では「積集合」といいます。

Pythonでもそれぞれの集合演算子を用いて簡単に求めることができます。

演算子説明
和集合和集合とは 2 つの集合の少なくともどちらか 1 つに含まれる要素の集合のこと
差集合差集合とは集合 1 に含まれているけれど集合 2 には含まれていない要素の集合のこと
積集合積集合とは 2 つの集合の両方に含まれる要素の集合のこと
対称差 ^対称差集合とは 2 つの集合のどちらか片方だけに含まれる要素の集合のこと

セット×集合演算はデータ分析に必要不可欠ですね!


まとめ

本日は、Pythonで以下を学びました。

コンテナの相互変換・ネスト

関数説明
list 関数渡されたものをリストに変換
tuple 関数渡されたものをタプルに変換
set 関数渡されたものをセットに変換

ディクショナリはキーと値の2種類の情報をペアで管理すつコンテナのため、単一のリストやセットからは変換できません。

コンテナには、文字列や数値のデータ以外に、コンテナ自体を格納することもできます。

集合演算

セットだけが集合演算を利用できる。

次回は「条件分岐」を扱っていきます。


各コンテナの定義の仕方、特徴をしっかり覚えます!

目次