我想做什么: 通过过滤下限列表,创建并打印满足以下所有条件的单词列表:
这个词至少有6个字符; 这个词包含字母'e'至少3次; 字母'e'的第一次出现在单词的后半部分。
到目前为止我有这个: 之前使用过:
words = [ line.strip() for line in file(DATA+'english_wordlist.txt') ]
(降级在我的工作中早先定义为部分单词)
[word for word in lowers if len(word)>=6 and word.count('e')>=3 and 'e' is after word(len(word)/2::)]
我知道'e'是单词(len(word)/ 2::)是错误的,但这只是我粗略的逻辑。我到底怎么做到这一点?
答案 0 :(得分:1)
and word.index('e') >= len(word)/2
答案 1 :(得分: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:]]
Python中的{p> len(word)/2
是true division
..因此它可能会给出浮点值..
因此,将其强制转换为int
并添加1以在中间后移动它。
*编辑: - 或者你可以简单地使用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:]]
答案 2 :(得分:0)
在单词的后半部分首先检查'e'是否等同于知道它不会出现在单词的前半部分。这应该对你有帮助。