営業時間:平日9:00~17:00

プログラミング

Python基礎編:setの記述方法と変換

saori
Python基礎編:setの記述方法と変換

これまでのPythonの記事では、リストやタプル、ディクショナリの記述方法を説明してきました。

今回はこれらと似たような「set」と呼ばれるものを説明したいと思います。リストやタプル、ディクショナリと比べても簡単です。

setとは

setとは、集合を表すデータ型です。リストやタプルと同じように複数の要素を持つことができますが、リストやタプルと違うところが下記の2つあります。

  • 要素が重複しないように管理される
  • setの要素には順番がない

setを実際に作ってみながら、リストやタプルと違うところを確かめていきましょう。

setの書き方

setは「 {}(波かっこ)」を使います。

number = {1,2,3,4,5,6}

coin = {"表","裏"}

country = {"Japan","America","Korea","Chinese","japan"}

中の要素は、文字列でも数値でも大丈夫です。

また、set()を使うことで、簡単にsetの成型ができたり、リストやタプル、ディクショナリからsetを作ったりすることもできます。

set()を使ったsetの生成

先ほど紹介した、「変数名 = {要素,要素,…}」の作り方ではないsetの作り方は以下の通りです。

変数名 = set([要素,要素名…])

以下が出力結果です。

簡単にsetを作ることができましたね。

リスト、タプル、ディクショナリをsetに変換

リスト、タプル、ディクショナリをsetに変換することが出来ます。変換方法は、

新しい変数 = set(リスト・タプル・ディクショナリ名)

と記述します。

まず初めに、リスト・タプル・ディクショナリを定義しています。5行目からsetに変換するコードを書いています。

以下が出力結果です。

print()で新しく作った変数を呼び出してみると「{}(波かっこ)」がついたsetに変換されていることが分かります。

そして、リストやタプルはそのままsetになっていますが、ディクショナリをsetに変換した場合はどうなっているでしょうか。「key」のみの出力となっていることが分かると思います。

setを作る時、ディクショナリを変換するときだけは「リストやタプルと違う」ということを覚えておいてください。

要素が重複しないように管理される

冒頭でもあげたリストとの違いの1つに「要素が重複しないように管理される」というのがあります。例えばリストでは、以下のように、同じ内容の要素があっても問題なく使用できます。

number_list = [1,2,1,5,6,2]

しかし、setの場合は、重複した値は取り除かれます。試しに、このリストを「set()」を使ってsetに変換してみます。

以下が出力結果です。

重複していた「1」と「2」は1つずつしか出力されていません。これが、重複しないように管理されるということです。setの中の要素名は必ず1つずつしかないということですね。

なぜこのように管理されているかというと、重複する要素名があると「集合」と呼ばれる演算子をしたときに要素を取り出すことができなくなってしまうからです。

setの要素には順番がない

リストとの違いの2つ目に「setの要素には順番がない」ということがあります。リストはインデックスと呼ばれる番号で順番通りに管理されていましたが、setの要素には順番がありません。出力するときも、自分が入力した順番では出力されないこともあります。

例えば以下のリストをsetに変換して出力してみましょう。また、インデックス番号を指定して要素が取り出せるかも試してみます。

number_list = [1,2,5,3,10,7]

以下が出力結果です。

setの要素が、自分で入力した順番にならずに、数字順になっています。そしてインデックスで取り出そうとすると、エラーが出ています。

「TypeError: ‘set’ object does not support indexing」これは、「setオブジェクトはindexによる要素のアクセスはできません」という意味です。

これで、setには順番がないことがわかりました。

まとめ

今回説明したsetをつかうと、プログラミングがとても便利になるので様々な作り方を覚えてください。

次回は、setの追加・削除について説明します。

あなたにオススメの記事

Python基礎編:リストの書き方とルール、出力→追加→削除

近年よく聞くAIとは何でしょうか

東京駅周辺をサクっと散策ついでに撮影も

東京駅周辺をサクっと散策ついでに撮影も

5月10日はビデオ業界の普及率を上げたベータマックスが発売された日

平成の携帯電話の歴史まとめ(2000年~)

沖縄出張中に貝殻に絵画を描いている夫婦に出会ったお話

7月1日はウォークマンの日

7月1日はウォークマンの日

8月4日は日本でiTunes Music Storeのサービスが開始された日

8月4日は日本でiTunes Music Storeのサービスが開始された日

EOS Kiss X10を使ってカメラ初心者が撮影してみた【食べ物編】

EOS Kiss X10を使ってカメラ初心者が撮影してみた【食べ物編】

5月27日はドラゴンクエストの日

4月23日はセブンのnanacoカードのサービスが開始された日

納涼夏祭りin高速道路の高架下

納涼夏祭りin高速道路の高架下

文房具専門店伊東屋がやっぱりスゴい

文房具専門店伊東屋がやっぱりスゴい

神田明神納涼祭でカメラの練習

神田明神納涼祭で一眼カメラの撮影練習

7月7日は「ひまわり8号」の運用が開始された日

7月7日は「ひまわり8号」の運用が開始された日

SPONSOR