読者です 読者をやめる 読者になる 読者になる

mu chance or much chance ?

日々の戯れ言

言語処理100本ノック 2015 06

  • 問題

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で作成したメソッドを利用しています.
リストから集合に変換することで,
重複している中身を消すことができるので便利です.