要素の重複を省くためSetオブジェクトを使いました.
リストと似たように使ってましたが,リストとは全く異なる概念のデータ型ということを知りました.Set型について調べたのでまとめてみました.
今回は要素の重複ができないSet型について紹介します.
Set型の特徴とは
Set型はこのような特徴があります.
- Set型であることは{}で表す
- 要素は重複しない
- 要素は順番を持たない
- 要素は変更可能
この特徴を見るとリストや辞書と似た点があったりちょっと混乱しますね.
実際にPythonを使ってSet型の特徴を確認してみましょう!
Set型は{}で表す
Set型のデータは{}
中括弧で囲まれています.
training = {'ベンチプレス', 'レッグプレス', 'チェストプレス'}
print(training)
{}
で囲まれていると辞書型と勘違いしそうですよね.
見分けるポイントは
- 辞書型はキーとバリューで1つの要素になっていること
- Set型は1つのデータしか要素をとれないこと
{}
を使っているのは同じですが要素の形が違うので見分けれそうですね!
training_set = {'ベンチプレス', 'レッグプレス', 'チェストプレス'}
print(training_set) # Set型
training_dic = {
'ベンチプレス': 60,
'レッグプレス': 90,
'チェストプレス': 45
}
print(training_dic) # dic型
要素は重複しない
リストは同じ要素を持てましたが,Setは持てません.
複数同じ要素があるときにSetを定義すると要素は一意に絞られます.
training_list = ['ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス']
print(training_list) # リスト型
training_set = {'ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス'}
print(training_set) # Set型
リストはチェストプレスが重複して入っていますが,Setは一意になっていますね.
要素を重複させたくないときはSetを使うと良いでしょう!
要素は順番を持たない
リストの要素は順番を持つためインデックス指定ができましたが,Setは順番を持たないためインデックス指定できません.
training_list = ['ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス']
print(training_list[0]) # リスト型
training_set = {'ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス'}
print(training_set[0]) # Set型
要素は変更可能
Set型は要素の追加や削除ができます.
この点はリストに似ていてタプルとは対照的ですね.
training_set = {'ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス'}
training_set.add('ショルダープレス')
print(training_set) # {'ベンチプレス', 'レッグプレス', 'チェストプレス', 'ショルダープレス'}
training_set.remove('ベンチプレス')
print(training_set) # {'レッグプレス', 'チェストプレス', 'ショルダープレス'}
Set型を使った型変換について
Set関数を使うとリストや辞書,タプルをSet型に型変換ができます.
# 辞書からSetへ型変換する
training_dict = {
'ベンチプレス': 60,
'レッグプレス': 90,
'チェストプレス': 45
}
print(set(training_dict))
# リストからSetへ型変換する
training_list = ['ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス']
print(set(training_list))
# タプルからSetへ型変換する
training_taple = ('ベンチプレス', 'レッグプレス', 'チェストプレス', 'チェストプレス')
print(training_taple)
型変換するとそれぞれ違いがありますね.
辞書からSetへ型変換するとキーだけ表示されました.
キーとバリューでまとまって1つの要素になるかなと思いましたが,そうすると辞書とSetの区別が付かなくなるので妥当な結果ですね.
リストからSetへ型変換すると重複が消えました.
リストは要素の重複ができますがSetはできないので一意になりました.
タプルからSetへ型変換すると同様に重複が消えました.
タプルは要素の追加・削除ができないイミュータブルな型ですが,Setに変えることで追加・削除ができるようになりました.
まとめ
今回はSet型の特徴について紹介しました.
要素が一意になるくらいしか知らなかったので勉強になりました.
リストや辞書,タプルとまた違った特徴を持っているのでSetを使えると表現範囲が広がりますね.
これらの特徴を覚えていれば最低限Setを使えるでしょう.
- Set型であることは{}で表す
- 要素は重複しない
- 要素は順番を持たない
- 要素は変更可能