Python:使用生成器打印二维数组

时间:2018-09-19 12:29:46

标签: python generator

我是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 :(得分:1)

您将获得一个生成器,该生成器将创建一个看起来像["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

相关问题