Setは順序が保証されていないCollectionです。
Setについて詳しく説明します。
生成(Create)
Setは、以下のように {...}
を使用して作成します。 {...}
はdictと同じですが、追加されるアイテムがkeyの値を持っていません。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
print(cities)
出力してみれば順序が保証されていないことを見ることができます。
{'Beijing', 'Seoul', 'Paris', 'Washington', 'Tokyo'}
注意すべき点は、アイテムがないSetを作成するときに、次のように生成しないでください。 { }
はdictのかsetのか区別が困難である。 { }
は、基本的にdictオブジェクトとして生成されます。
cities = {}
print(type(cities)) # <class 'dict'>
空のSetオブジェクトを作成したい場合は、次のように set()
で生成することができます。
cities = set()
print(type(cities)) # <class 'set'>
アクセス(Access)
Setは順序が保証されず、インデックスがない(unindexed)Collectionあるため、 get()
や []
などでアクセスができません。
次のように for in
にSetのすべてのアイテムにアクセスすることができます。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
for city in cities:
print(city)
Ouput:
Tokyo
Washington
Paris
Beijing
Seoul
または if in
を使用して、特定のアイテムがSetにあることを確認することができます。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
if 'Seoul' in cities:
print('Seoul is in cities')
if 'Bangkok' not in cities:
print('Bangkok is not in cities')
Output:
Seoul is in cities
Bangkok is not in cities
追加(Add)
add()
でSetにアイテムを追加することができます。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
cities.add('Bangkok')
print(cities)
Output:
{'Washington', 'Tokyo', 'Paris', 'Beijing', 'Bangkok', 'Seoul'}
の更新プログラム(Update)
update()
でListのすべてのアイテムをSetに追加することができます。
cities = {'Seoul', 'Tokyo', 'Beijing'}
cities.update(['Bangkok', 'Washington', 'Paris'])
print(cities)
Output:
{'Bangkok', 'Paris', 'Tokyo', 'Washington', 'Seoul', 'Beijing'}
update()
の引数としてSetを転送することもできます。重複を許可していないので、重複したアイテムがある場合は一つだけSetに登録されます。
cities = {'Seoul', 'Tokyo', 'Beijing'}
cities.update({'Seoul', 'Washington', 'Paris'})
print(cities)
Output:
{'Paris', 'Washington', 'Seoul', 'Tokyo', 'Beijing'}
次のように二つ以上のSetを更新することもできます。
cities = {'Seoul', 'Tokyo', 'Beijing'}
cities.update({'Seoul', 'Washington'}, {'Paris', 'Bangkok'}, {'Hanoi'})
print(cities)
Output:
{'Beijing', 'Hanoi', 'Tokyo', 'Seoul', 'Paris', 'Washington', 'Bangkok'}
削除(Remove)
remove()
でSetでどんなアイテムを削除することができます。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
cities.remove('Seoul')
print(cities)
Output:
{'Paris', 'Beijing', 'Washington', 'Tokyo'}
remove()
は存在しないアイテムを消去しようとすると、次のようにエラーが発生します。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
cities.remove('Bangkok')
print(cities)
Output:
Traceback (most recent call last):
File "/home/js/blog-code/python_example/set_example.py", line 40, in <module>
cities.remove('Bangkok')
KeyError: 'Bangkok'
Discard
discard()
も remove()
のようにアイテムをSetから削除することができます。違いは、存在しないアイテムを削除するときにエラーが発生しません。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
cities.discard('Seoul')
cities.discard('Bangkok')
print(cities)
Output:
{'Beijing', 'Washington', 'Tokyo', 'Paris'}
Pop
pop()
はSetの最後のアイテムを削除して、その値を返します。
しかし、Setは順序が保証されないので、どんなアイテムが削除されるか予想することはできません。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
removed = cities.pop()
print(removed)
print(cities)
Output:
Washington
{'Beijing', 'Tokyo', 'Paris', 'Seoul'}
Del
del
でSetオブジェクトを削除することができます。
cities = {'Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris'}
del cities
和(Union)
union()
は和のように、二つのSetを一つのSetで合わせ、そのSetを返します。重複を許可していないため、重複した値がある場合のみ含まれます。
cities1 = {'Seoul', 'Tokyo', 'Beijing'}
cities2 = {'Seoul', 'Washington', 'Paris'}
cities3 = cities1.union(cities2)
print(cities3)
Output:
{'Seoul', 'Tokyo', 'Washington', 'Paris', 'Beijing'}
積(Intersection)
積のように、二つのSetの重なる部分だけを得たい場合は、次のように &
キーワードを使用することができます。
cities1 = {'Seoul', 'Tokyo', 'Beijing'}
cities2 = {'Seoul', 'Washington', 'Paris'}
cities3 = cities1 & cities2
print(cities3)
Output:
{'Seoul'}
Related Posts
- Python - JSONファイル読み書きする方法
- Python - 平方根の計算方法(Square Root)
- Python - 文字列 特定文字 削除
- Python lower() 文字列を小文字に変換
- Python upper() 文字列を大文字に変換
- Python - ファイル数の確認
- Python - イテレーションステートメントでセット巡回
- Python - 文字列位置(Index)を探す
- Python - ファイルを読み込み、1行ずつリストに保存する
- UbuntuにPython 3.10をインストールする方法
- Python - 関数の定義と呼び出し方法
- Python - ディクショナリーの整理と例
- Python - ディクショナリーの初期化、4つの方法
- Python - XML生成とファイルの保存
- Python - XML解析、タグ、または要素別に読み取る
- Python - 文字列をリストに変換する方法
- Python - 'and'と'&'の違い
- Python - 文字列 切り取り(substring、slicing)
- Python - 'is'と'=='の違い
- PythonでShell Command、スクリプトの実行
- Python - 数字3桁ごとにコンマ(,)を入れる方法
- Python - 辞書をリストに変換
- Python - 文字列から数字のみを抽出する方法
- Python - zipで二つのリスト縛り
- Python - リストを文字列に変換する
- Python - 辞書にキーがあることを確認する
- Python - ファイル、フォルダが存在確認
- Python - floatをintに変更する方法
- Python - リストの最初、最後の 要素を取得する方法
- Python - bytesをStringに変換する方法
- Python - Stringをbytesに変換する方法
- Python - 辞書の重複排除方法
- Python - 二つのリスト一つ併合
- Python - リストの重複排除、4つの方法
- Python - listの先頭にデータを追加する