LoginSignup
30
22

More than 5 years have passed since last update.

Pythonのsetを知る

Last updated at Posted at 2017-12-14

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同士の演算もあるみたいなんですが、まだ触れていないので、今回はここまで触れました!

イケてない書き方や、もっといい方法がある場合はおしえていただけますと幸いです!

30
22
2

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
30
22