【发布时间】:2016-01-30 05:57:21
【问题描述】:
所以我正在尝试制作一个基于文本的冒险游戏,它有一个使用嵌套列表管理的地图系统,如下所示:
self.map_ = [
['O', 'O', 'O'],
['O', 'O', 'O'],
['O', 'O', 'O']
]
我在一个名为 Map() 的类中有地图,该类具有创建地图、添加和更改单元格等功能。
但是,我不确定如何打印地图。我想创建一个__str__() 函数来打印地图,但我不确定如何去做。我希望它像这样打印出来,用空格分隔 X 轴上的元素,用换行符分隔 Y 轴:
O O O
O O O
O O O
我见过这样的例子:
for row in map_:
print ' '.join(row)
...这个例子以我想要的格式打印地图。
但是,我想把它变成一个__str__() 函数,它返回' '.join(row)(在每个行元素之间打印一个空格)和'\n'.join(map_)(在每行之间打印一个换行符)的组合。
当然,我希望元素的顺序正确(打印视图的左上角对应于map_[0][0] 等)。
有没有办法使用__str__() 函数来做到这一点,或者我必须求助于使用上面的打印函数?
【问题讨论】:
-
你必须创建自己的类才能使用
__str__() -
你的
__str__方法需要返回你想要的字符串,而不是打印出来。 -
@Pynchia:BLARGH!停止使用毫无意义的
lambdas,尤其是转身并调用可以直接使用的C 内置:'\n'.join(map(' '.join, self.map_))。如果您将lambda与map一起使用,请不要;它比 Pythonic 的 gen expr 或 list comp 更慢且更长。只有当转换函数是 C 内置函数时,map才有意义地胜过 list comp/gen expr。
标签: python list-comprehension tostring nested-lists