Как реализовать матрицу с классами

Мне нужно реализовать матрицу с N ячейками, и эти ячейки зависят от параметров K, некоторых фиксированных и других переменных. Я бы хотел сделать все это с помощью классов. может кто-нибудь объяснить мне основную процедуру?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
535
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я знаю, мне не стоит на это отвечать, так как это «домашнее задание», но я не могу устоять перед матричным классом !!

По сути, матрица - это не что иное, как список списков. Реализация его как класса означает, что вы должны добавить некоторые базовые функции (методы), например, получить значение определенной строки / столбца, распечатать матрицу и т. д.

Вот простой, с которого вы можете начать:

class Matrix2D:
    def __init__(self):
        '''
        Init an empty matrix.
        '''
        self.matrix = []
        self.rows = 0
        self.columns = 0
        self.name = 'Unnamed'

    def __str__(self):
        return self.matrix

    def generate(self, rows, columns, verbose=False):
        '''
        Return a list of lists containing the indices of the matrix (row, col)
        and prints it by row.
        int, int -> [[(int, int), ...], ...]
        '''
        self.rows = rows
        self.columns = columns
        self.matrix = [[(row, col) for col in range(columns)] for row in range(rows)]
        if verbose ==  True:
            print(f'Generated a {self.rows} row/s by {self.columns} column/s matrix')
            print('--------' * columns)
            self.printme()
            print('--------' * columns)
        return self.matrix

    def printme(self, verbose=False):
        '''
        Print the matrix by row.
        '''
        if verbose == True:
            print(f'I am a {self.rows} row/s by {self.columns} column/s matrix')
        for row in self.matrix:
            print(row)

    def get_row(self, n, verbose=False):
        '''
        Return the row n of the matrix.
        '''
        if verbose ==  True:
            print(f'matrix[row = {n}]...')
            print(self.matrix[n])
        return self.matrix[n]

    def get_col(self, n, verbose=False):
        '''
        Return the column n of the matrix.
        '''
        column_items = []
        i = 0
        while i < self.rows:
            column_items.append(self.matrix[i][n])
            i += 1
        if verbose ==  True:
            print(f'matrix[col = {n}]...')
            for item in column_items:
                print(item)
        return column_items

    def get_cell(self, row, col, verbose=False):
        '''
        Return a specific cell of the matrix.
        '''
        if verbose ==  True:
            print(f'cell[row = {row}, col = {col}]...')
            print(self.matrix[row][col])
        return self.matrix[row][col]

    def write_cell(self, row, col, data, verbose=False):
        '''
        Assign some data to a specific cell of the matrix.
        '''
        self.matrix[row][col] = data
        if verbose ==  True:
            print('Data wrote into cell[row = {row}, col = {col}]...')
            print(self.matrix[row][col])                            
        return self.matrix[row][col]

Контрольная работа:

print('#########')
m = Matrix2D()
m.generate(4,5,True)
m.printme()
m.get_row(1,True)
m.get_col(1,True)
m.get_cell(3,2,True)
m.write_cell(3,2, (9,9,9),True)

Выход:

#########
Generated a 4 row/s by 5 column/s matrix
----------------------------------------
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]
[(1, 0), (1, 1), (1, 2), (1, 3), (1, 4)]
[(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)]
[(3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
----------------------------------------
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]
[(1, 0), (1, 1), (1, 2), (1, 3), (1, 4)]
[(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)]
[(3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
matrix[row=1]...
[(1, 0), (1, 1), (1, 2), (1, 3), (1, 4)]
matrix[col=1]...
(0, 1)
(1, 1)
(2, 1)
(3, 1)
cell[row=3, col=2]...
(3, 2)
Data wrote into cell[row = {row}, col = {col}]...
(9, 9, 9)

Затем вы можете добавить несколько дополнительных методов для более сложных операций, таких как умножение матриц, транспонирование и т. д. Удачи!

Огромное спасибо! Я знаю, что это неспецифический и очень простой вопрос, но я новичок и считаю очень полезным видеть практические примеры приложений. @alec_djinn

Steren 25.06.2018 14:35

@Steren Да, я это представлял. Вот почему я ответил. Тем не менее, поиск в Google тоже, вероятно, помог бы. В следующий раз постарайтесь приложить немного усилий для решения вашей проблемы. Удачи и приятного обучения.

alec_djinn 25.06.2018 14:36

Другие вопросы по теме