営業時間:平日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の追加・削除について説明します。

あなたにオススメの記事

5G到来で動画マーケティングはここまで変わる

5G到来で動画マーケティングはここまで変わる

ECO EDO日本橋2019に行ってきました

ECO EDO日本橋2019に行ってきました

佃島の盆踊は東京都指定無形民俗文化財

佃島の盆踊は東京都指定無形民俗文化財

8月20日は交通信号設置記念日

8月20日は交通信号設置記念日

6月14日はYahoo!JAPANがリアルタイム検索を開始した日

6月14日はYahoo!JAPANがリアルタイム検索を開始した日

第51回三鷹阿波踊りへ行ってきました

第51回三鷹阿波踊りに行ってきました

8月6日は太陽熱発電の日

8月6日は太陽熱発電の日

神保町ブックフェスティバルへ行ってきました

神保町ブックフェスティバルへ行ってきました

iPadはレンタルしてお得に使おう

iPadはレンタルしてお得に使おう

Python基礎編:関数の書き方

Python基礎編:関数の書き方

8月5日はタクシーの日

8月5日はタクシーの日

江東区民まつり亀戸地区夏祭り大会:花火編

第37回江東区民まつり亀戸地区夏祭り大会:花火編

見次公園フェスティバルのイベントが凄い

見次公園フェスティバル「早稲田大学ちんどん研究会」「中国雑技団」

「スラスラ読めるpythonふりがなプログラミング」を読んでみた

「スラスラ読めるPythonふりがなプログラミング」を読んでみた

Python基礎編:for文でループ(繰り返し)処理

Python基礎編:for文でループ(繰り返し)処理

SPONSOR

  • 最近チェックしたアイテム