我是Python的新手,我正在學習列表理解。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 post並試圖將代碼貼有return len([word for word in words if len(word) >= 2 and word[0] == word[-1]])
。它的工作原理,如果源是一個硬編碼的列表,但如果來源是外部文件失敗。
現在,我的問題是,確實sum
只適用於列表和元組?如果我正確理解docs,則可以總結任何迭代。
任何啓發將非常感激。 :)
你的文件格式如何,每行是否有一個字?你的嘗試似乎對我有效...... – jamylak 2012-04-11 09:22:53
@jamylak是的,它的格式是這樣的。 – 2012-04-11 09:24:42
當你說它不起作用時,會發生什麼?它打印什麼? – mikej 2012-04-11 09:27:39