LoginSignup
0
0

More than 3 years have passed since last update.

【Python】 set型について学んだことを備忘録として

Posted at

この記事について

python初心者である私が学習したものをまとめたものです.
set型について超基本的なことを書きました.

Setとは

setとは,シーケンスと似たデータ型.シーケンスとはざっくり言うと,複数の要素を持つデータの種類のことを指す.

setを使うことにより,リストのように複数の要素を保存できる,
リストは要素の重複が可能であったに対し,setは要素の重複はできない.

⇒setにある存在する値を登録しようとしても,新しい要素が追加されない.

特徴

  • 集合型と呼ばれている.

  • 順番の概念がなく,インデックスで要素をアクセスすることができない.

  • メソッドを使って,中の要素を操作できる.

  • 要素の変更,追加,削除ができる.(setとほぼ同じ機能を持ち,変更ができないfrozenset型というデータ型がある)

  • オブジェクト自体の書き換えを行えることがある(変更可能な[mutable]オブジェクト

定義方法

setの定義には,波括弧{}を使う.要素はカンマで区切る.

dice = {1,2,3,4,5,6}
coin = {"表","裏"}
card = {1,2,3,4,5,6,7,8,9,10,11,12,13}

setの和集合を取得する

setの和集合は,|演算子を使う.
OR演算子(論理和)に近い操作になる

dice_nums = {1,2,3,4,5,6}
card_nums = {1,2,3,4,5,6,7,8,9,10,11,12,13}

union_dice_card = dice | card
union_dice_card

setの差集合

setの差集合を得るには,-演算子を使う

dice_nums = {1,2,3,4,5,6}
card_nums = {1,2,3,4,5,6,7,8,9,10,11,12,13}

diff_dice_card = dice_nums - card_nums
diff_dice_card

setの共通集合

setの共通集合は&演算子を使う.論理積(AND)と同じ演算子を使う.

dice_nums = {1,2,3,4,5,6}
card_nums = {1,2,3,4,5,6,7,8,9,10,11,12,13}

diceNums_and_cardNums = dice_nums & card_nums
diceNums_and_cardNums

setの対象差を取得する

対象差とは,排他的論理和のような操作であり,^演算子を使う.
両方のsetに共通して含まれている要素だけを取り除いた,要素の集合を得る.

dice_nums = {1,2,3,4,5,6}
card_nums = {1,2,3,4,5,6,7,8,9,10,11,12,13}

diceNums_xor_cardNums = dice_nums ^ card_nums
diceNums_xor_cardNums

set型メソッドの活用

  • s1.union(s2):和集合を返す
  • s1.intersection(s2):交わりを返す
  • s1.difference(s2):差集合を返す
  • s1.symmetric_difference(s2):対象差を返す
  • s1.add(追加する要素):要素を追加する
  • s1.remove(削除する要素):要素を削除する

s = {1,2,3,4,5,6,7,8,9,10}
even = {2,4,6,8,10,12,14,16,18,20}
s.union(even)                #{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20}
s.intersection(even)         #{2, 4, 6, 8, 10}
s.difference(even)           #{1, 3, 5, 7, 9}
s.symmetric_difference(even) # {1, 3, 5, 7, 9, 12, 14, 16, 18, 20}
s.add(11)                    #{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
s.remove(1)                  #{2, 3, 4, 5, 6, 7, 8, 9, 10}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0