2017-02-09 3 views
0

ich eine Datei, die eine Matrix enthält die erste Zeile zeigt die Anzahl der Zeilen 3, Spalten 5.Zählen der Anzahl von Zellen in einer Matrix mit Python

3 5 
    TTTTT 
    TMMMT 
    TTTTT 

I ein Python-Programm schreibe die einzuteilen Spalten und die Anzahl von Zellen zusammenzufassen,

TT 
    TM 
    TT 

    total number = 6 

der zweite zwei

TT 
    MM 
    TT 
    total number= 6 

und der letzte

T 
    T 
    T 

    total number = 3 

Der Code Ich habe bisher

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)) 

der Ausgang

5 
    5 
    5 

Es besteht die Anzahl der Zellen in jeder Reihe hinzugefügt wird. Ich bin neu in Python-Programmierung.

+0

Durch welche Regel "spalten" Sie die Spalten? –

+0

Ich teile die Zeilen nicht Spalten – Newby

Antwort

1

Vielleicht so?

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) 

Also mache ich zuerst einen Generator, der die Länge der Zeilen pro Iteration produziert. Dann mache ich eine Liste dieser Werte nach Liste Verständnis ([i für i in count_cells_row (file_in)]), das ist eine andere Möglichkeit, eine Schleife zu machen. Die Ergebnisse werden in Ihrem Fall sein [5, 5, 5].

Ich benutze die Python-Funktion sum, um die Summe dieser Werte zu berechnen.

Verwandte Themen