- 2018-8-16
- pythonプログラミング, リスト
- python, セット
- 【Python】セットの特徴・作成方法・リストとの違いについて はコメントを受け付けていません
この記事ではPythonに登場するセットの
・特徴
・作成方法
・リストとの違い
などについて解説していきます。
セットはリストやタプルなどと似ていますが
違いもありますので、最後までご覧ください。
目次
【Python】セットの特徴とは?リストとの違い
セットはリストとかなり似ています。
ちなみに「リストについて詳しく知りたい」
という方はこちらの記事をご覧ください。
話を元に戻します。
たとえばリストだと例題1[]の中に要素を入れていきます。
#例題1 a = ['放射能汚染','味覚障害','後頭部骨折','放射能汚染'] print(a)
実行すると
[‘放射能汚染’, ‘味覚障害’, ‘後頭部骨折’, ‘放射能汚染’]
と表示されます。
ここで注目してほしいのが’放射能汚染’です。
リストだと’放射能汚染’のように
同じ単語や数字を2つ以上格納することができます。
でもセットだと、同じ単語を2つ以上格納することができません。
これがセットの特徴であり、リストとの違いです。
またリストは[]で囲みましたがセットは{}で囲む点も違いますね。
例題2はセットの具体例です。
またセットの作成方法になります。
#例題2(セットの具体例) a = {'放射能汚染','味覚障害','後頭部骨折','放射能汚染'} print(a)
実行すると
{‘放射能汚染’, ‘後頭部骨折’, ‘味覚障害’}
となります。
例題1と同じ単語を格納させたのですが
‘放射能汚染’という単語がリストだと2回表示されたのに
セットだと1回しか表示されていませんね。
こんな感じで
リストとセットの大きな違いは
・リストは[]で囲むけどセットは{}で囲む
・リストは値が重複(放射能汚染)することがあるがセットは値が重複しない
ということです。
これがセットの特徴であり、
リストとの違いです。
【Python】セットにおいて要素を追加する方法
先ほども申しましたが、
セットは値を重複させることができません。
#例題3 a = {'スキンヘッド','スキンヘッド','少年','怪物'} print(a)
例題3はセットの具体例です。
スキンヘッドという値が2つ入っています。
でも実行するとスキンヘッドは1回しか表示されません。
例題3を実行したらこうなります。
{‘怪物’, ‘スキンヘッド’, ‘少年’}
こんな感じでセットだと同じ値を重複させることはできません。
でも、値を追加させることはできます。
ただ、すでに存在する値を追加することはできないだけです。
例題4をご覧ください。
#例題4 a = {'スキンヘッド','少年','怪物'} a.add("権力者") print(a)
例題4のように
a.add("権力者")
とすることで、『権力者』という値が追加されます。
a.add("権力者")
で、『a.』の部分はaに対してという意味合いです。
で、『add(‘権力者’)』は権力者という値を追加しなさいという意味です。
したがって
a.add("権力者")
はaに権力者という値を追加しなさいという意味になります。
aにはa = {‘スキンヘッド’,’少年’,’怪物’}という値が入っているので
実行すると、
{‘怪物’, ‘スキンヘッド’, ‘少年’, ‘権力者‘}
と、『権力者』という値が追加されて表示されるわけですね。
「じゃ、セットだと例題4のように
最後に値が追加されるの?」と思った方もいるかもしれません。
そんな方のために例題5を作ってみました。
#例題5 a = {'スキンヘッド','少年','怪物'} a.add("アリ") print(a)
例題5で追加する値は『アリ』です。
実行すると
{‘怪物’, ‘アリ’, ‘スキンヘッド’, ‘少年’}
となります。
こんな感じでセットは値(要素)の順番って
決まっていません。
バラバラになってしまうんですね。
セットは値(要素)の順番を保持しないためです。
この辺を理解しておかないと
予期せぬエラーの原因になってしまいますので
知っておいてくださいね。
次に例題6をご覧ください。
#例題6 a = {'スキンヘッド','少年','怪物'} a.add("少年") print(a)
例題6はすでにaの中に『少年』という要素(値)が入っています。
さらに『少年』を加えようとしています。
実行すると
{‘怪物’, ‘スキンヘッド’, ‘少年’}
となり、『少年』という値(要素)が重複していません。
これはここまでの解説でわかっていただけると思います。
とにかくセットはリストと違って
同じ値(要素)を重複して表示させることはできません。
だから、すでに存在する値を追加して実行しても
重複して表示されることはないです。
【Python】セット内に自分が思っている要素が存在するか確認する方法
「セットの中にスキンヘッドって要素は入ってたっけな?」
というときもあるでしょう。
そんなとき、例題7のようにやってみてください。
#例題7 a = {'スキンヘッド','少年','怪物'} b = 'スキンヘッド' in a print(b)
スキンヘッドがセットの中に入っていたら『True』を
存在していなければ『False』が返ってきます。
実行すると
『True』となります。
こんな感じで「スキンヘッドって要素、セットの中にあったかな?」
と思ったら、
b = 'スキンヘッド' in a
と言った感じで、
『in a』がセットaの中にと言う意味なので
セットaの中に『スキンヘッド』があるか?
確認することができるんです。
では例題8はTrueでしょうか
それともFalseでしょうか。
#例題8 a = {'スキンヘッド','少年','怪物'} b = 'オオカミ少年' in a print(b)
答えはFalseです。
『オオカミ少年』はセットの中にありませんからね。
【Python】リストからセットに変更する方法
リストとして作成されたものでも
セットに変更することができます。
値の重複を嫌うときなんかに有効な方法ですね。
#例題9([]内はリストです) a = ['スキンヘッド','少年','怪物'] b = set(a) print(b)
例題9ですが、
a = ['スキンヘッド','少年','怪物']
は[]で囲まれていますね。
だからリストです。
リストは[]、セットは{}で囲むのがルールですから。
で、
b = set(a)
とすることで、リストをセットに変更しています。
実行すると[]で囲まれていたものが
{}に変更されているのがわかりますね。
もう一つ例題をやってみましょう。
例題10は単純にリストです。
なので値が重複していても、
しっかりと実行すれば表示されます。
#例題10(リスト) a = ['スキンヘッド','少年','怪物','怪物'] print(a)
でも、セットに変更すると重複した値『怪物』
が表示されなくなります。
例題11をご覧ください。
#例題10 a = ['スキンヘッド','少年','怪物','怪物'] b = set(a) print(b)
例題10は例題9のリストを
セットに変更したものです。
実行すると
となり、『怪物』という値が1つしか
表示されていませんね。
とにかくセットだと重複がなくなります。
【Python】セットまとめ
とにかくセットはリストと似ています。
でも違いもあります。
リストは[]で囲みます。
でもセットは{}で囲みます。
それからリストは値が重複していても
重複した値、すべてが表示されます。
でもセットは重複した値は無視されてしまいます。
値が重複していても1つしか表示されません。
以上で解説を終わります。
pythonを学ぶならこちらの動画講座がおすすめです
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする
かなり長い講座名ですね。
わかりにくそうな感じがします。ですが、pythonの基礎からしっかりとわかりやすく教えてくれます。
また、きれいなコードを書くための方法についても
教えてくれるので、周りが「どうやってそんなコードを書いてるの?」
とびっくりされるようになるかもしれません。それからWebアプリケーション開発の基本的なテクニックについても
教えてくれます。なので、pythonを使ってwebアプリケーションを作ってみようと
思っている方にもおすすめです。値段は時期によって違います。
詳しくはこちらをご覧ください。
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習
この講座ではまずpythonの基礎を学びます。
次に人工知能について学んでいきます。そして最終的にはpythonを使って文字認識や株価分析ができるような技術力が身につくようになっています。
単純に教科書的なpythonを学ぶのではなく
仕事でも使えるスキルを身につけたい方におすすめの講座です。なのに値段は恐ろしいほど安いです。
時期によって値段は変動するので
詳しくはこちらをご覧ください。
Pythonで機械学習:scikit-learnで学ぶ識別入門
この動画講座は広島大学准教授の先生が担当しています。
機械学習が専門の先生です。すごく深い知識が身につきます。
大学の先生の講義って難しそうってイメージがあるかもしれません。でもそんなことはありません。
すごくわかりやすいです。pythonで機械学習のスキルを身につけたい方におすすめです。
値段は時期によって違いますが、かなり、良心的な価格になっています。詳しくはこちらをご覧ください。