Как исправить программу, чтобы не выдавало ошибку?
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
Но у вас там всё-равно списковое сокращение какое-то странное и выводит не ту матрицу. Вам надо более тщательно посчитать как правильно срез делать, чтобы вернуло то, что вы планировали.