setの特徴
1:setとはデータ型の1つ
2:データ型なので、タプルやリストを渡して作ることが出来る
3:値の重複がない
4:リストのようにindexの参照は出来ない
setを用いたデータの作り方!
setにリストやタプル、また波括弧を渡すことで、作成することが出来ます!
# リストを引数にする場合
x = set([1,2,3])
print(x)
# {1, 2, 3}
# タプルを引数にする場合
x_ = set((1,2,3))
print(x_)
# {1, 2, 3}
# 波括弧で囲った値を変数に代入する方法
a = {1,2,3}
print(a)
# {1, 2, 3}
本当にsetなんていうデータ型があるか確認してみましょう!
# 先ほど作成したx,x_という変数を使います!
print(type(x_))
# <class 'set'>
print(type(x_))
# <class 'set'>
print(type(a))
# <class 'set'>
クラスはset型となっているので、今までのデータ型とは違うみたいですね!
また、波括弧を変数に代入する方法は、@shiracamus さんにおしえて頂きました!
以前はset関数という名前で投稿していましたが、setは関数ではないようです!
setは型なので、厳密には関数ではなく、コンストラクタを呼び出してインスタンス生成してます。
他の言語なら new set(array)と書きます。
intやstrやlistも同じ。
関数とクラスを意識することなく使えるのがPythonのいいところですね。
shiracamusさん、ありがとうございますm(__)m
次は本当に重複がないのか調べてみます!
y = set([1,2,2,3,3,3,4,4,4,4])
print(y)
# {1, 2, 3, 4}
本当に重複がないようです!
そのため、重複を削除したい場合にsetを使う場合もあるようです!
index参照ができないか確認!
y = set([1,2,2,3,3,3,4,4,4,4])
print(y)
# {1, 2, 3, 4}
# yの二番目の要素を指定!
y[1]
"""
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
"""
エラーが出ました!
set型の各要素を取り出したい場合はリストに直してindexを指定する場合やfor文で取得することも出来るようです
# リスト関数に渡して、indexを指定!
y = list(y)
y[1]
# 2
# リスト内包表記でリストに直して、indexを指定!
[i for i in y][1]
# 2
おわりに
set同士の演算もあるみたいなんですが、まだ触れていないので、今回はここまで触れました!
イケてない書き方や、もっといい方法がある場合はおしえていただけますと幸いです!