2016-04-12 3 views
0

Я учу код, и я не совсем понял, как класс действительно работает. Если бы я создать матрицу, например:Python: получить значение из строки и столбца из матрицы

class Matrix(object): 

def __init__(self,i,j,value): 
    self.rows = i 
    self.cols = j 
    self.value = value 

, если у меня есть случайная матрица и хочет, чтобы выбрать самую большую ценность в ряде, я могу написать:

for value in row 

и программа будет знать, я имею в виду значение ij в i-й строке?

+0

Если вы боретесь с классами python, ознакомьтесь с этим вопросом: http://stackoverflow.com/questions/6667201/how-to-define-two-dimensional -array-in-python. И это немного говорит о матрицах. http://stackoverflow.com/questions/6667201/how-to-define-two-dimensional-array-in-python. Udacity также имеет хорошие стартовые курсы на python , –

+0

Является ли self.rows списком строк (т. Е. Self.rows = ['dog', 'cat', hamster ']), или это целое число, указывающее количество строк в вашей матрице? – user1245262

+0

проверить это: https://docs.python.org/2/tutorial/classes.html – Fabiano

ответ

1

Обычно в матрицах python были бы двумерные массивы. Как:

matrix = [[11,12,13,14],[21,22,23,24],[31,32,33,34]] 

// такое же, как

даст вам матрицу, как:

11 12 13 14 
21 22 23 24 
31 32 33 34 

поэтому у вас есть массив, который хранит строки (внешний массив) и один массив для каждой строки. Для доступа, например. значение в позиции (2,4), который 24 вы могли бы сделать

matrix[1][3] 

в matrix[1] = [21,22,23,24] и matrix[1][3] = [21,22,23,24][3] = 24

Чтобы перебрать вашей матрицы (т.е. ваш двумерный массив), вы можете сделать:

#iterate over the rows 
for row in matrix: 
    #max value 
    max = max(row) 
    print max 
    #if you want to iterate over the elements in the row do: 
    for element in row: 
     print element 

В вашем примере вы определяете класс Matrix, который будет инициализирован тремя параметрами: i, j и value. Вы больше не делаете. Для примеров вашего собственного класса матрицы вы можете посмотреть here

+0

Это определенно не находит max и не дает индекса. – knh170

0

Использование enumerate интерполировать индексов:

>>> for i, j in enumerate(["a","b","c"]): 
... print i, j 
... 
0 a 
1 b 
2 c 

В вашем случае:

# suppose m is an instance of class Matrix 
for i, row in enumerate(m.value): 
    for j, ele in enumerate(row): 
     # find greatest and halt 
     # i, j are the expected index 
     yeild i, j 

Чтобы найти наибольший элемент из списка существует несколько способов, например: Pythonic way to find maximum value and its index in a list?

Однако , более разумным способом является использование numpy.matrix, если программирование самостоятельно не требуется.

0

for value in row 

код не получит Вас наибольшее значение в строке. Он будет просто перебирать (запускать) каждый элемент в строке (как только вы определите строку, конечно). Вам нужно добавить чек, чтобы получить наибольшее количество.