Python: использовать генераторы для печати 2d массива - PullRequest
0 голосов
/ 19 сентября 2018

Я новичок в python и хотел создать 2D-массив и напечатать его позже.

self.values = [[0 for k in range(8)] for i in range(8)]

Я переписал метод __str__(self):

def __str__(self):
    s = (x.__str__() + "\n" for x in self.values).__str__()
    return s

def __repr__(self):
    return self.__str__()

Вопрос о строке, где я создаю переменную s.

Я пробовал несколько вещей:

s = (x.__str__() + "\n" for x in self.values).__str__()

s = str((x + "\n" for x in self.values))

s = list((x.__str__() + "\n" for x in self.values))

В каждом случае я понимаю, почему это не работает, но яне могу найти способ, как это могло бы работать.

Я очень рад, если кто-то может показать способ использования генераторов для создания строки.

Привет, Финн

1 Ответ

0 голосов
/ 19 сентября 2018

Вы получаете генератор, который создаст список, похожий на ["1\n", "2\n"].Возможно, вы захотите присоединиться к этому списку:

''.join(s)

Поскольку join позволяет вам указать присоединяющуюся строку, вы можете также пропустить + "\n" из генератора и сделать:

return '\n'.join(str(x) for x in self.values)

Смотри также https://docs.python.org/3.7/library/stdtypes.html?highlight=join#str.join

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...