我是 Python 的新手,我正在研究列表理解。
我想要做的是将以下代码转换为列表理解:
def words_without_e():
count = 0
words = open('words.txt')
for word in words:
if word.find('e') == -1:
count += 1
words.close()
return count
这是我微弱的尝试:
words = open('words.txt')
print sum([1 for word in words if word.find('e') == -1])
但不幸的是,它不起作用。我期望得到的答案是 37641,但我得到的是 0。:(
我尝试创建另一个代码做同样的事情,但我没有使用文件作为源代码,而是使用了一个列表:
def test():
words = ['hello', 'world', 'ciao']
return sum([1 for word in words if word.find('e') == -1])
它有效。
我看到了这个“非常”类似的 SO帖子,并尝试了那里发布的代码return len([word for word in words if len(word) >= 2 and word[0] == word[-1]])
。如果源是硬编码列表,它可以工作,但如果源是外部文件,它会失败。
现在,我的问题是,仅sum
适用于列表和元组吗?如果我正确理解了文档,则可以总结任何可迭代的内容。
任何启蒙将不胜感激。:)