Sam*_*cer 3 python list-comprehension
我正在使用两个范围在第二场比赛中放置牌,所以我创建了一个'tilemap'......
tilemap = [ [TILE for w in range(MAPWIDTH)] for h in range(MAPWIDTH)]
Run Code Online (Sandbox Code Playgroud)
这工作...现在我想附加一个名为'piecemap'的类的实例,它对应于tilemap.要做到这一点,我有一个名为Piece的类,看起来像这样......
class Piece():
otherstuff = "string"
location = [0,0]
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使用列表推导将宽度范围中的"w"和高度范围中的"h"加载到"location"属性中?目前我的努力(不起作用)看起来像这样......
piecemap = [[Piece.location[0] for w in range(MAPWIDTH)],[Piece.location[1] for h in range(MAPHEIGHT)]
Run Code Online (Sandbox Code Playgroud)
我知道这是错的,但不知道如何做对!任何帮助?
class Piece():
otherstuff = "string"
location = [0,0]
Run Code Online (Sandbox Code Playgroud)
这是一个非常奇怪的课程.你有阶级属性otherstuff和location,仿佛每一个Piece曾经创造会占据相同的位置.
相反,您可能需要实例属性,如下所示:
class Piece:
def __init__(self, x, y, name="Unspecified"):
self.location = [x,y]
self.otherstuff = name
Run Code Online (Sandbox Code Playgroud)
然后你的列表理解如下:
tilemap = [ [Piece(w, h) for w in range(MAPWIDTH)] for h in range(MAPWIDTH)]
Run Code Online (Sandbox Code Playgroud)