我有两种方法来总结文本文件中找到的数字。第一个工作,第二个不工作。任何人都可以解释第二个错在什么地方?生成器与嵌套for循环
输入文本文件:
The quick brown 123
fox 456 jumped over
the 789 lazy dog.
方法#1:
total = 0
for line in open(fn):
numbers = (int(block) for block in line.split() if block.isdigit())
total += sum(numbers)
print('total: ', total)
这得到了正确的答案1368(= 123 + 456 + 789)。
方法2:
numbers = (int(block) for block in line.split() for line in open(fn) if block.isdigit())
total = sum(numbers)
print('total: ', total)
这将产生错误:
NameError: name 'line' is not defined
我与发电机玩弄所以真正的问题是,为什么在方法#2发电机是没有好。我不需要其他方法在文本文件中添加数字。我想知道是否有一个没有标准循环的纯生成器解决方案。谢谢。
把'for block放在line.split()'后面的'for open line(fn)' –