我有一个包含ex:
数字列表的文件1
2
3
4
5
6
7
8
9
10
我如何能够读取前五个数字,计算总和,然后读入接下来的五个数字?我可以使用for循环吗?我希望我的答案看起来像这样:
var1 = 15
var2 = 40
有比使用for循环更简单的方法吗?
答案 0 :(得分:3)
你可以在文件句柄上使用next
并转换为整数,在生成器理解中传递给sum
,然后解压缩到2个变量,使用默认的0
值以防万一文件在10个值之前结束(next(f,0)
执行此操作)
with open("input.txt") as f:
var1,var2 = (sum(int(next(f,0)) for _ in range(5)) for _ in range(2))
答案 1 :(得分:0)
请记住,python中的for
循环在概念上等同于for each
。在获得所需输入后,最好使用带有条件的while
语句来停止读取。
答案 2 :(得分:0)
您可以使用itertools grouper
配方,这在许多应用程序中都很有用!
import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return itertools.zip_longest(*args, fillvalue=fillvalue)
sums = []
with open(filename) as f:
groups = grouper(f)
for group in groups:
sum_ = sum(int(line) for line in group)
sums.append(sum_)