Как исправить программу, чтобы не выдавало ошибку?

from functools import reduce


class LineToTable:
    def __init__(self, sp, row, col):
        self.sp, self.row, self.col = sp, row, col
        
    def resize(self):
        return [[i for i in self.sp[c:self.col + c]] for c, i in enumerate(self.sp, self.col)]
    

class TableToLine:
    def __init__(self, val):
        self.val, self.row, self.col = val, len(self.val), len(self.val[0]) 
        
    def resize(self):
        return reduce(lambda x, y: x + y, self.sp)

ltt = LineToTable([1, 2, 3, 4, 5, 6], 3, 2)
matrix, a, b = ltt.resize()
print(*matrix, sep='\n')
print(f'Sizes: {a}x{b}')
>Вывод
>[1, 2]
>[3, 4]
>[5, 6]
>Sizes: 3x2


Ответы (1 шт):

Автор решения: CrazyElf

У вас resize возвращает только матрицу, если хотите, чтобы он возвращал и размеры, добавьте их в конец return:

return ..., self.row, self.col

Но у вас там всё-равно списковое сокращение какое-то странное и выводит не ту матрицу. Вам надо более тщательно посчитать как правильно срез делать, чтобы вернуло то, что вы планировали.

→ Ссылка