从文本文件中读取。 - Python

时间:2011-07-10 23:49:21

标签: python

我的问题:

例如,我的文本文件名为'feed.txt'。对于内部,它喜欢:

2 # two means 'there are two matrix in this file'

3 # three means 'the below one is a 3*3 matrix'

1 8 6

3 5 7

4 9 2

4 # four means 'the below one is a 4*4 matrix'

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

此文件旁边有两个矩阵。 [[1,8,6],[3,5,7],[4,9,2]][[16,3,2,13],[5,10,11,8],[9,6,7,12],[4,15,14,1]]

我想知道如何在Python中将这两个矩阵用作

之类的列表
list_=[[1, 8, 6], [3, 5, 7], [4, 9, 2]]

然后我可以获得sam(list_[0])=15

也。

中有三行
list_=[[1, 8, 6], [3, 5, 7], [4, 9, 2]]

我希望每行的总和。所以我做了

list _ = [[1,8,6],[3,5,7],[4,9,2]]

表示我在范围内(len(list_)):

sum_=sum(list_[i])

print(sum_)

但我不能得到三个号码,我只得到一个号码,为什么?

1 个答案:

答案 0 :(得分:4)

好的,一步一步带你走过这条路。如果'file'是您的文件名,请尝试:

matrices = []                    # The list you'll be keeping your matrices in
with open('file') as f:
    num_matrices = int(f.readline())
    for mat_index in range(num_matrices):
        temp_matrix = []         # The list you'll keep the rows of your matrix in
        num_rows = int(f.readline())
        for row_index in range(num_rows):
            line = f.readline()
            # Split the line on whitespace, turn each element into an integer
            row = [int(x) for x in line.split()]
            temp_matrix.append(row)
        matrices.append(temp_matrix)

然后,每个矩阵都将存储在matrices的索引中。您可以根据需要迭代这些:

for my_matrix in matrices:
    # Do something here
    print my_matrix

对于对行进行求和的第二部分,如果要使其正常工作,则有两个选项。使用i索引到列表的一行:

for i in range(len(my_matrix):
    total = sum(my_matrix[i])
    print(total)

或者使用更多Pythonic方式并直接遍历您的子列表:

for row in my_matrix:
    total = sum(row)
    print(total)

如果您想保存这些单独的结果以供日后使用,则必须为结果制作一个列表。尝试:

>>> sumz = []
>>> for row in my_matrix:
    sumz.append(sum(row))

>>> sumz
[15, 15, 15]