today::エンジニアに憧れる非エンジニア

今のところは、エンジニアとは言えないところの職種です。しかしエンジニア的なものの考え方に興味津津。

Pythonあれこれ 2021-01-30 - 集合

概要

「Head First Python 第2版」を進めていった中で考えたことの記録です。

Head First Python 第2版 ―頭とからだで覚えるPythonの基本

Head First Python 第2版 ―頭とからだで覚えるPythonの基本

  • 作者:Paul Barry
  • 発売日: 2018/03/24
  • メディア: 単行本(ソフトカバー)

集合というコレクションについて

  • 学校教育で学んだ「集合」と同様の特徴を持つコレクション
  • Pythonにおける集合の主な特徴
    • 重複値を持つことができない
    • (辞書と同様に)順序を持たないデータ構造である
    • 高速な検索のために最適化されている
  • Pythonの集合に定義されているメソッド
    • 集合を結合するunion()メソッド
    • 自分にあって相手にない要素を示すdifference()メソッド
    • 自分と相手両方にある要素を示すintersection()メソッド
vowels = { 'a', 'e', 'e', 'i', 'o', 'u', 'u' }
print(vowels)
# => {'e', 'i', 'o', 'u', 'a'}

↑上記コードの要点

  • 集合を表すリテラル記法は中括弧{}である
    • オブジェクトの区切りはカンマ,である
    • 辞書とは異なり、「コロン:によるキーと値の区切り」は存在しない

集合を結合するunion()メソッド

  • 集合オブジェクトのインスタンスを呼び出し元とする
  • 引数として、1つ以上の集合を与える
  • union()メソッドの呼び出し元の集合と、引数として与えた集合の和を求める
  • 戻り値は、集合の和として得られた新たな集合オブジェクト
vowels = set('aeiou')
word = 'hello'
u = vowels.union(set(word))
print(u)
# => {'e', 'h', 'l', 'i', 'u', 'o', 'a'}

自分にあって相手にない要素を示すdifference()メソッド

  • 集合オブジェクトのインスタンスを呼び出し元とする
  • 引数として、1つ以上の集合を与える
  • difference()メソッドの呼び出し元の集合のうち、引数として与えた集合の全てに存在しない要素から成る新たな集合を得る
    • 「引数として与えられた集合に存在し、呼び出し元の集合に存在しない要素」は含まれない
  • 戻り値は、上記演算により得られた新たな集合オブジェクト
vowels = set('aeiou')
word = 'hello'
d = vowels.difference(set(word))
print(d)
# => {'u', 'i', 'a'}

difference()メソッドの戻り値として得られた集合dに'h'および'l'が含まれないことに注意。

自分と相手両方にある要素を示すintersection()メソッド

  • 集合オブジェクトのインスタンスを呼び出し元とする
  • 引数として、1つ以上の集合を与える
  • intersection()メソッドの呼び出し元の集合、および引数として与えた集合の全てに共通して存在する要素から成る新たな集合を得る
  • 戻り値は、上記演算により得られた新たな集合オブジェクト
vowels = set('aeiou')
word = 'hello'
i = vowels.intersection(set(word))
print(i)
# => {'e', 'o'}