前提・実現したいこと
ngram('abcabc',1)と入れたら['a', 'b', 'c', 'a', 'b', 'c']と出力され、
ngram('abcabc',2)と入れたら['ab', 'bc', 'ca', 'ab', 'bc']と出力され、
ngram('abcabc',3)と入れたら['abc', 'bca', 'cab', 'abc']と出力されるようにしたいです。
発生している問題・エラーメッセージ
このようなプログラムをかいてみました。
def ngram(s,n):
l=len(s)
result=[]
for i in range(0,l):
result.append(s[i:i+n])
return result
ngram('abcabc',1)と入れたら正しく['a', 'b', 'c', 'a', 'b', 'c']と出力されるのですが、 ngram('abcabc',2)と入れたら['ab', 'bc', 'ca', 'ab', 'bc', 'c']となり ngram('abcabc',3)と入れたら['abc', 'bca', 'cab', 'abc', 'bc', 'c']と出てしまいます。 解決方法がわからないです。
該当のソースコード
Python
試したこと
for i in range (0,l-1)にしたりしてみましたが、すると2文字の時はうまくいきますが一文字、三文字の時だめなので同じことだなと思い、わからなくなってしまいました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/12 12:02