使用Python

时间:2017-02-09 09:50:49

标签: python matrix

我有一个包含矩阵的文件,第一行显示行数3,第5列。

    3 5 
    TTTTT
    TMMMT
    TTTTT

我正在编写一个python程序来划分列并总结单元格数,

    TT
    TM
    TT

    total number = 6

第二个

    TT
    MM
    TT
    total number= 6

和最后一个

    T
    T
    T

    total number = 3

到目前为止我的代码

 rows = []
with open('example.in') as fp: #the file name is example.in
    for line in fp:
     rows.append(line.strip()) #removes white spaces 

    for i , rowi in enumerate(rows[1:]): #slices out the first row
      print(len(rowi))

输出

    5
    5
    5

它将每行中的单元格数相加。 我是python编程的新手。

1 个答案:

答案 0 :(得分:1)

也许是这样的?

def count_cells_row(file_in):
    """
    generator to count cells per row

    file_in -- fileobject containing matrix
    """
    for row in file_in:
        row = row.strip()
        if row:
            yield len(row)

with open('/path/to/file') as file_in:
    ncells = sum([i for i in count_cells_row(file_in)])

print (ncells)

所以我首先创建一个生成每次迭代行长度的生成器。 然后我通过列表理解([i for count in count_cells_row(file_in)])列出这些值,这是另一种制作循环的方法。 结果将在你的情况下[5,5,5]。

我使用python函数sum来计算这些值的总和。