pとqは論理数学では命題のことで,Python等のプログラミングにおける論理演算では変数のことです.
記号 | Pythonでの演算子 | 意味 |
---|---|---|
p ⋁ q | p or q | 論理和:pまたはq.pかqのどちらか一方が真である. |
p ⋀ q | p and q | 論理積:pかつq.pとqの両方が真である. |
p ̅ pの上にーが付いてる |
not p | 否定:pの真と偽が反転. |
p XOR q | p ^ q | 排他的論理和:どちらか一方が真の時に真になる. |
集合(set)はPythonでは集合型として用意?されてます.ホントは違うものかもしれないけど,似たような使い方なので,同じものとして以下に示します.
集合はいろんなものが集まった一つのグループのことで,そのグループに属しているものを集合の要素もしくは元と言います.例としては,
A = { 1,2,3,4,5 }
B = { 整数n | 1≦n≦5}
といった具合に集合を定義して使います.この場合,AとBが集合で,{ }内のものが要素ですねー.この要素がテキスト文書ならば文書集合(document collection)ということで,
情報検索(自然言語処理)係の分野で使いますね.正確には違うかもしれませんが,まぁ似たようなもんです.
ちなみに,集合Bの書き方に関して少し触れておくと,集合Bには整数nが要素として属すと定義されています.そして,その整数nの条件(もしくは命題)が”|”の後ろに記述されています.
つまり,集合Bには1以上5以下(”以”の場合はその数字も範囲に含まさることに注意!)の整数が要素として含まさってるよーということです.Pythonで集合Bのような書き方はできないと
思います.やるならfor文やif文を組み合わせて使うことになるでしょう.内包表記でもいいかもしれません.
以下のxは要素です.
記号 | Pythonでの演算子 | 意味 |
---|---|---|
∅ | set( ) もしくは { } | 空集合:どんな要素も属していない集合 |
x ∈ A | x in A | エレメント:xはAに属している.xはAの要素である. |
x ∉ A | x not in A | xはAに属さない.xはAの要素でない. |
A ⊆ B | A <= B もしくは A.issubset(B) | 部分集合(subset):Aの要素が全てBに属する時のAをBの部分集合という.AとBが完全一致も含む. |
A ⊂ B | A < B | 真部分集合:Aに属していない要素がBに存在する場合の部分集合Aのこと. |
∀x ∈ A | 全称記号:Aに属するすべての要素x | |
∃ | 存在記号:~が存在する | |
A = B | A == B | 相等:AとBが互いにすべての要素が属している.AとBが等しい.A ⊆ B かつ B ⊆ A の状態. |
U | 全体集合:すべての集合が属する集合 | |
A ̅ | 補集合:ある集合に属さない全体集合の要素からなる集合. A ̅ = { x | ( x ∉ A ) ⋀ ( x ∈ U ) } |
|
A ⋃ B | A|B もしくは A.union(B) | 和集合:AまたはBに属する要素の集合. A ⋃ B = { x | ( x ∈ A ) ⋁ ( x ∈ B ) } |
A ⋂ B | A & B もしくは A.intersection(B) | 積集合(共通集合,重なり):AかつBに属する要素の集合. A ⋂ B = { x | ( x ∈ A ) ⋀ ( x ∈ B ) } |
( a , b ) | ( a , b ) Pythonのタプル型で代用可? |
順序対:ある集合の要素aとbの2つをペアにしたもの.順序を考慮するため,( a , b ) と ( b , a ) は別物と考える. |
A × B | 直積集合:Aの要素aとBの要素bに対する全ての順序対 ( a , b ) を要素とする集合. A × B = { ( a , b ) | ( a ∈ A ) ⋀ ( b ∈ B ) } |
|
A XOR B | A ^ B もしくは A.symmetric_difference(B) | 排他的和集合(そんな言葉ないかも...):AとBのうち,どちらかにしか属さない要素の集合. |
また,集合演算は足す・引くもできます.あと,空白部分は分からないです...分かったら書きますが,そもそもPythonではサポートしてないかもしれないです.
直積集合を関数定義してみると,以下のようになるでしょうか?一応型についても書いてありますが,他の言語のような強制力がなく,コメントの延長扱いなので,
あまり意味はありません...以下の場合,集合CがA × Bを意味しています.
def direct_product_set(A: set,B: set) -> set: C = set() for a in A: for b in B: C.add((a,b)) return C A={1,2,3} B={1,2} C=direct_product_set(A,B) print(C)
参考
- 集合とは(論理積、論理和、否定、排他的論理和)ペン図での表現
- Python入門 - 演算子
- Python, set型で集合演算(和集合、積集合や部分集合の判定など) | note.nkmk.me
- Pythonではじまる、型のある世界 - Qiita
- ”確かな力が身につくPython「超」入門”,ISBN978-4-7973-8440-6