所以我正在尝试制作一个基于文本的冒险游戏,它有一个使用嵌套列表管理的 map 系统,如下所示:
self.map_ = [
['O', 'O', 'O'],
['O', 'O', 'O'],
['O', 'O', 'O']
]
我的 map 位于一个名为 Map()
的类中具有创建 map 、添加和更改单元格等功能。
但是,我不知道如何打印 map 。我想创建一个__str__()
功能来打印 map ,但我不确定如何做到这一点。我希望它像这样打印出来,用空格分隔 X 轴上的元素,用换行符分隔 Y 轴:
O O O
O O O
O O O
我见过这样的例子:
for row in map_:
print ' '.join(row)
...这个示例以我想要的格式打印 map 。
但是,我想把它变成 __str__()
函数,它返回 ' '.join(row)
的组合(在每个行元素之间打印一个空格)和 '\n'.join(map_)
(在每行之间打印换行符)。
当然,我希望元素的顺序正确(打印 View 的左上角对应于 map_[0][0]
等)。
有什么办法可以用 __str__()
来做到这一点吗?功能,还是我必须求助于使用上面的打印功能?
最佳答案
这个怎么样,使用list comprehension ?
"\n".join([" ".join(row) for row in map_])
例如:
In [1]: map_ = [
...: ['O', 'O', 'O'],
...: ['O', 'O', 'O'],
...: ['O', 'O', 'O']
...: ]
In [2]: print "\n".join([" ".join(row) for row in map_])
O O O
O O O
O O O
更直接地回答有关使用 __str__()
的问题:
def __str__(self):
return "\n".join([" ".join(row) for row in self.map_])
关于Python:如何为嵌套列表返回具有特定格式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35098565/