Задать вопрос
@YuriyCherniy

Объясните замечание ментора, куда копать?

Есть класс, методы которого возвращают ряды и колонки матрицы из строк вида: "1 2 3\n4 5 6\n7 8 9\n8 7 6"
spoiler
class Matrix:
    def __init__(self, matrix_string):
        matrix = []
        matrix_string = matrix_string.split('\n')
        [matrix.append(i.split(' ')) for i in matrix_string]
        self.matrix = [list(map(int, i)) for i in matrix]

    def row(self, index):
        return self.matrix[index - 1]

    def column(self, index):
        return [i[index - 1] for i in self.matrix]

Есть замечание ментора:
I have an issue with line 5, though: you shouldn't use list comprehensions with side effects! Nested LCs have their own problems, but in this case it should be OK.

О каких побочных эффектах в генераторах списков говорит ментор? Ментора спросить не могу, их на обучающем ресурсе всего 92 человека на 45000 таких как я. За бесплатно спасибо ему и на том.
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Включения не должны иметь побочных эффектов. В частности нельзя изменять состояние объектов и переменных. А у вас в строке
[matrix.append(i.split(' ')) for i in matrix_string]
происходит изменение списка matrix.
Ответ написан
Комментировать
@dmtrrr
Backend developer

In [1]: l = []

In [2]: [l.append(i) for i in range(1, 10)]
Out[2]: [None, None, None, None, None, None, None, None, None]

In [3]: l
Out[3]: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Это строчка мешает чтению кода, обычно ожидается, что результат list comprehension будет использоваться.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽