- 問題
06. 集合
"paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ.
- 解答例
def ngram(n, sentence): gram = [] for i in range(len(sentence) - n + 1): gram.append(''.join(sentence[i:i + n])) return gram str1 = "paraparaparadise" str2 = "paragraph" setX = set(ngram(2, str1)) setY = set(ngram(2, str2)) # 集合X・Y print(setX) print(setY) # 和集合 積集合 差集合 print(setX.union(setY)) print(setX.intersection(setY)) print(setX.difference(setY)) # 集合に含まれているかどうか print("se" in setX) print("se" in setY)
- コメント
問題05で作成したメソッドを利用しています.
リストから集合に変換することで,
重複している中身を消すことができるので便利です.