1

私がやろうとしていること: 下位リストをフィルタリングすることにより、次の基準をすべて満たす単語のリストを作成して出力します。

単語の長さは 6 文字以上です。単語に文字「e」が少なくとも 3 回含まれている。文字「e」の最初の出現は、単語の後半にあります。

私はこれまでのところこれを持っています: 以前に使用されました:

words = [ line.strip() for line in file(DATA+'english_wordlist.txt') ]

(lowers は、私の仕事で単語の部分的なセットとして以前に定義されていました)

[word for word in lowers if len(word)>=6 and word.count('e')>=3 and 'e' is after word(len(word)/2::)]

「e」が word(len(word)/2::) の後にあることは知っていますが、これは私の大まかな論理です。これをどのように正確に達成しますか?

4

3 に答える 3

1
and word.index('e') >= len(word)/2
于 2012-09-25T18:25:02.397 に答える
0

'e' が単語の後半部分で最初に出現することを確認することは、単語の前半部分に e が出現しないことを知ることと同じです。それはあなたを助けるはずです。

于 2012-09-25T18:26:50.600 に答える
0
[word for word in lowers if len(word)>=6 and word.count('e')>=3 and 
'e' not in word[int(len(word)/2) + 1:]]

len(word)/2true divisionPythonにあります..したがって、float値を与える可能性があります..したがって、型キャストしてint1を追加して、中央の後に移動します..

*編集: - または、単純にlen(word)//2(これはfloor division) を使用でき、型キャストする必要はありません。

[word for word in lowers if len(word)>=6 and word.count('e')>=3 and 
'e' not in word[(len(word)//2) + 1:]]
于 2012-09-25T18:26:26.337 に答える