我是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))
在每种情况下,我都理解为什么它不起作用,但是我找不到找到它如何起作用的方法。
如果有人可以展示一种使用生成器创建字符串的方法,我感到非常高兴。
问候, 芬兰人
答案 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