将元组转换为列表并再次转换为元组

290

我目前正在使用瓦片地图制作基于pygame游戏的地图编辑器。 关卡由块构建而成,结构如下(尽管更大):

level1 = (
         (1,1,1,1,1,1)
         (1,0,0,0,0,1)
         (1,0,0,0,0,1)
         (1,0,0,0,0,1)
         (1,0,0,0,0,1)
         (1,1,1,1,1,1))

其中,“1”代表墙壁方块,“0”代表空气方块。

以下代码基本上是处理方块类型更改的代码:

clicked = pygame.mouse.get_pressed()
if clicked[0] == 1:
    currLevel[((mousey+cameraY)/60)][((mousex+cameraX)/60)] = 1

但是由于水平存储在元组中,我无法更改不同块的值。我如何以简单的方式更改水平中的不同值?


16
不要使用元组,一开始就使用列表。如果你需要不断转换它们,当级别很大时,它可能会严重拖慢代码的速度。请注意保持原有意思并使语言更简单易懂。 - jamylak
4
一开始就使用列表代替元组怎么样? - Krzysztof Bujniewicz
7
@user2133308 顺便提一下,为了保证代码正确性,请使用整数除法运算符 // 而不是普通的 /,因为在 Python 3 中,/ 将执行浮点数除法,可能会破坏您的代码。 - jamylak
11个回答

1
在我的情况下,我想要合并行/列表:
a = ['Tom', 'Dick', 'Harry']
b = ['20', '32', '14']
c = ['foo', 'bar', 'blah']

lines = [list(row) for row in zip(a, b, c)]

lines = [['Tom', '20', 'foo'], ...]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接