我有兩種方法來總結文本文件中找到的數字。第一個工作,第二個不工作。任何人都可以解釋第二個錯在什麼地方?生成器與嵌套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)' –