gpt4 book ai didi

python编码求和网格的行和列

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:31 25 4
gpt4 key购买 nike

我正在尝试在 python 编码中使用电子表格格式。试图教我的初中学生如何从 matrix.txt 文件中读取表格并生成一组行和列。然后我想让他们看看每列的总和是否与给定的总和相匹配并且行的总和相同。这是我放在 matrix.txt 文件中的内容

3 3
7 2 5 14
6 3 1 10
3 9 8 20
16 14 14

这是我到目前为止构建的代码,但我无法理解如何让程序计算每行前三个(行数)整数的总和。希望有人能帮忙。

k=[]
with open('matrix.txt') as f:
grid_data = [i.split() for i in f.readlines()]
for el in grid_data[0:]:
for num in el[0]:
k.append(num)
row=int(k[0])
for i in range(1,row):
for el in grid_data[i]:
print(sum(el[0:row-1]))

如果有更好的方法解决这个问题请告诉我。这是 2014 年过去的 UNSW 编码比较问题。我希望有一种很酷的方法来分析 python 中的表格或网格。

最佳答案

对于这样一个简单的问题,Numpy 完全是矫枉过正,并且需要您将一大堆额外的背景知识倾倒在年轻学生身上。

我通常不喜欢用勺子喂食,但是 pythonic 解决方案的元素太多,无法用散文轻松解释,所以这里是代码:

with open('matrix.txt') as f:
# Skip dims because redundant.
f.readline()

# Convert to int as we read.
grid = [map(int, i.split()) for i in f]

# Define convenience vars (also for efficiency - rows is evaluated twice).
rows = grid[:-1]
totals = grid[-1]

# Verify row totals.
for (r, row) in enumerate(rows):
assert sum(row[:-1]) == row[-1], 'row {}'.format(r)

# Verify column totals.
for (c, total) in enumerate(totals):
assert sum(row[c] for row in rows) == total, 'col {}'.format(c)

编辑: Blue reminded me一个非常好的 pythonic 技巧,用于转置数组。最终结果更优雅:

# Replace convenience down with…

# Verify row totals.
for (r, row) in enumerate(grid[:-1]):
assert sum(row[:-1]) == row[-1], 'row {}'.format(r)

# Verify column totals.
for (c, col) in enumerate(zip(*grid)[:-1]):
assert sum(col[:-1]) == col[-1], 'col {}'.format(c)

唯一的警告(也是我完整保留原始内容的原因)是它可能会炸毁普通初中生的大脑。谨慎使用。

关于python编码求和网格的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com