Python 集合(set) -入門編-
目次 [閉じる]
Python の集合(set)
集合(set)の作成と参照
「{ } (波括弧)」による集合の作成
文字列を「{ } (波括弧)」で囲み、単一の値で集合を作成してデータ型も確認してみます。
1 2 3 4 5 | # -*- coding: utf-8 -*- ### {}で集合の作成 setData = {'wepicks'} print(setData) print(type(setData)) |
<class 'set'>
wepicks という1つの文字列が格納された 集合 です。
整数値で複数の値の集合を作成
複数の値を扱う場合、各値を「,(カンマ)」で区切ります。
1 2 3 4 5 | # -*- coding: utf-8 -*- ### {}で集合の作成 setData = {2, 3, 5, 7, 11, 13} print(setData) print(type(setData)) |
<class 'set'>
複数の整数値が格納された集合となります。
for文で値の参照
for文で 集合 の値を参照してみます。
1 2 3 4 5 6 7 | # -*- coding: utf-8 -*- ### {}で集合の作成 setData = {2, 3, 5, 7, 11, 13} ### for文で取得 for values in setData: print(values) print('------') |
——
3
——
5
——
7
——
11
——
13
——
文字列で複数の値の集合を作成
文字列では値を「 '(シングルクォート)」で囲みます。
1 2 3 4 5 | # -*- coding: utf-8 -* ### {}で集合の作成 setData = {'A', 'B', 'C', 'D', 'E'} print(setData) print(type(setData)) |
<class 'set'>
※集合 は リスト や タプル のようにシーケンス型ではないので順番による制御はありません。
for文で値の取得
1 2 3 4 | #for文で取得 for values in setData: print(values) print('------') |
——
D
——
B
——
A
——
C
——
浮動小数点数で複数の値の集合を作成
今度は、浮動小数点数で集合を作成してみましょう。for文で値を参照して、各値のデータ型も確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 | # -*- coding: utf-8 -* ### {}で集合の作成 setData = {1.2, 0.012, 100.2, 0.105, 11.1} print(setData) print(type(setData)) #for文で取得 for values in setData: print(values) print(type(values)) print('------') |
<class 'set'>
0.105
<class 'float'>
——
1.2
<class 'float'>
——
100.2
<class 'float'>
——
0.012
<class 'float'>
——
11.1
<class 'float'>
——
集合のデータ型は<class 'set'>ですが、各値は、<class 'float'>となっています。
「set() 」による集合の作成
set() 関数で集合を作成できます。
1 2 3 | ### set() で集合の作成 setData = set('abcdefg123456') print(setData) |
set()関数で集合を作成する場合、重複する値は取り除かれ要素は一意になります。
1 2 3 | ### set() で集合の作成 重複している要素がある場合一意になる setData = set('aaabbbcccdddeee') print(setData) |
1 2 3 | ### set() で集合の作成 重複している要素がある場合一意になる setData = set('111222333444555') print(setData) |
リスト や タプル から集合を作成
set() 関数を利用すると リスト や タプル から集合を作成できます。
リスト から集合を作成する
1 2 3 4 | ### リスト から集合を作成 setData = set(['name', 'mail', 'address', 'tel']) print(setData) print(type(setData)) |
<class 'set'>
タプルから集合を作成する
1 2 3 4 | ### タプル から集合を作成 setData = set(('name', 'mail', 'address', 'tel')) print(setData) print(type(setData)) |
<class 'set'>
空の 集合
1 2 3 4 5 6 | # -*- coding: utf-8 -*- ### 集合の作成 #0個の集合 set()で初期化 setData = set() print(setData) print(type(setData)) |
<class 'set'>
{ } で初期化を行うとデータ型が辞書(dict)になります。
1 2 3 4 5 6 | # -*- coding: utf-8 -*- ### 集合の作成 #0個の集合 {}での初期化は辞書になる setData = {} print(setData) print(type(setData)) |
<class 'dict'>
集合への要素の追加と削除
要素の追加
集合 に要素を追加するには、add() を使用します。
1 2 3 4 5 6 | # -*- coding: utf-8 -*- ### 要素の追加 setData = {'a', 'b', 'c'} print(setData) setData.add('E') print(setData) |
{'c', 'a', 'b', 'E'}
要素の削除
集合 の要素を削除するには、remove() を使用します。
1 2 3 4 5 6 7 | # -*- coding: utf-8 -*- ### 要素の削除 setData = {'a', 'b', 'c'} print(setData) setData.remove('b') setData.discard('c') print(setData) |
{'a'}
集合の値を in でチェック
メニューに Maple Pecan Fried Chicken がある場合は、key を取得するサンプルコードです。
1 2 3 4 5 6 7 8 9 10 | # -*- coding: utf-8 -*- ### 集合の検索 in dictData = { 'breakfast': {'Pumpkin Spice Pancake Breakfast', 'Maple Pepper Bacon Breakfast Sandwich'}, 'lunch': {'Maple Pecan Fried Chicken', 'Monday-Friday'}, 'dinner': {'California Burger', 'Spicy Thai Basil Noodles', 'Maple Pecan Fried Chicken'} } for keyname, values in dictData.items(): if 'Maple Pecan Fried Chicken' in values: print(keyname) |
dinner
メニューに Maple Pecan Fried Chicken があり、さらに、California Burger は無い、場合に、key を取得するサンプルコードです。
1 2 3 4 | # -*- coding: utf-8 -*- for keyname, values in dictData.items(): if 'Maple Pecan Fried Chicken' in values and not ('California Burger' in values): print(keyname) |
和集合
1 2 3 4 5 6 7 | # -*- coding: utf-8 -*- ### 和集合 # どちらか一方にでも含まれている要素 setDataStr1 = {'a', 'b', 'c'} setDataStr2 = {'c', 'd', 'e'} print(setDataStr1 | setDataStr2) print(setDataStr1.union(setDataStr2)) |
{'a', 'e', 'd', 'c', 'b'}
積集合
積集合は、1番目の集合と2番目の集合の両方に共通して含まれている要素の集合です。& 演算子 や intersection()関数 を使用して積集合を抽出できます。
1 2 3 4 5 6 7 | # -*- coding: utf-8 -*- ###積集合 # 両方の集合に共通して含まれている要素 setDataStr1 = {'a', 'b', 'c'} setDataStr2 = {'c', 'd', 'e'} print(setDataStr1 & setDataStr2) print(setDataStr1.intersection(setDataStr2)) |
{'c'}
差集合
差集合は、1番目の集合に含まれていて、2番目の集合には含まれていない要素の集合です。& 演算子 や intersection()関数 を使用して差集合を抽出できます。
1 2 3 4 5 6 7 | # -*- coding: utf-8 -*- ###差集合 # 1番目の集合に含まれていて、2番目の集合には含まれていない要素 setDataStr1 = {'a', 'b', 'c'} setDataStr2 = {'c', 'd', 'e'} print(setDataStr1 - setDataStr2) print(setDataStr1.difference(setDataStr2)) |
{'a', 'b'}
排他的OR
排他的ORは、1番目の集合か2番目の集合のどちらか一方にしか含まれていない要素の集合です。^ 演算子 や symmetric_difference()関数 を使用して排他的ORを抽出できます。
1 2 3 4 5 6 7 | # -*- coding: utf-8 -*- ###排他的OR # どちらか一方の集合にしか含まれていない要素 setDataStr1 = {'a', 'b', 'c'} setDataStr2 = {'c', 'd', 'e'} print(setDataStr1 ^ setDataStr2) print(setDataStr1.symmetric_difference(setDataStr2)) |
{'a', 'e', 'd', 'b'}
タグ(=記事関連ワード)
日付
最終更新日:2024年09月05日