この記事について
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}