【发布时间】:2012-11-07 07:10:22
【问题描述】:
在下面的代码中,如果我使用:
for line in fin:
它只为'a'执行
但如果我使用:
wordlist = fin.readlines()
for line in wordlist:
然后它执行一个 thru z。
但readlines() 一次读取整个文件,这是我不想要的。
如何避免这种情况?
def avoids():
alphabet = 'abcdefghijklmnopqrstuvwxyz'
num_words = {}
fin = open('words.txt')
for char in alphabet:
num_words[char] = 0
for line in fin:
not_found = True
word = line.strip()
if word.lower().find(char.lower()) != -1:
num_words[char] += 1
fin.close()
return num_words
【问题讨论】:
-
你有两个循环 - 在任何情况下你都需要整个文件 - 我的建议是全部阅读。
-
@Greg Lafrance:除了Artsiom Rudzenka 的我的建议是通读。...我的建议是:通读一次!!! 通过将循环逻辑反转为
foreach line in file: foreach letter in alphabet(而不是字母表中的 foreach 字母:文件中的 foreach 行...通常 I/O 应该始终是两个循环的外部,因为 I/O 慢得多得多得多而不是内存访问。
标签: python