在 python 中解压一个元组并迭代它
Unpacking a tuple in python and iterating over it
我正在尝试解压缩一个协调元组,然后对其进行迭代以多次 blit 一个精灵:
def updateMap(self, playerPosition):
self.x_coord, self.y_coord = playerPosition
t = Tree(self.screen)
for x in range(self.x_coord):
for y in range(self.y_coord):
self.screen.fill((0,104,0))
t.drawTree((x, y))
但是我收到以下错误:
File "unnamed.py", line 26, in updateMap
for x, y in range(self.x_coord), range(self.y_coord):
ValueError: need more than 0 values to unpack
如果有人能为我指明正确的方向并以正确的方式做到这一点,我将不胜感激。谢谢。
编辑:我已经将我的代码编辑成上面的代码,以遍历每个坐标,如果 playerPostion 是 0,5,那么迭代将进行 (0,1) (0,2) (0,3) (0,4 ) (0,5) -- 但是虽然我没有收到任何错误,但似乎树没有正确绘制。谢谢..这似乎是答案,除了我的编码是错误的。
我认为这是你想要的:
from itertools import product
self.x_coord, self.y_coord = playerPosition #playerPosition is a tuple
t = Tree(self.screen)
for x,y in product(range(self.x_coord+1), range(self.y_coord+1)):
self.screen.fill((0,104,0))
t.drawTree((x, y))
也许如果你改变:
self.x_coord = 0
self.y_coord = 0
playerPosition = self.x_coord, self.y_coord
至:
self.x_coord, self.y_coord = playerPosition
然后你得到玩家位置 x 和 y 到 self.x_coord 和 self.y_coord
要迭代 x 和 y 的每个组合,您需要在 x 范围内的循环内放置一个 y 范围内的循环
for x in range(self.x_coord):
for y in range(self.y_coord):
self.screen.fill((0,104,0))
t.drawTree((x, y))
我认为 OP 想要遍历 X co-ordinates 的范围和 Y co-ordinates 的范围来为每种情况创建一个 (x,y)。
for x in range(self.x_coord):
for y in range(self.y_coord):
print(x, y)
使用内置的 Python zip 函数,假设两个可迭代对象的长度相同。如果不是,那么您需要先进行一些消毒以确保它们是正确的。
for x, y in zip(range(self.x_coord), range(self.y_coord))
我正在尝试解压缩一个协调元组,然后对其进行迭代以多次 blit 一个精灵:
def updateMap(self, playerPosition):
self.x_coord, self.y_coord = playerPosition
t = Tree(self.screen)
for x in range(self.x_coord):
for y in range(self.y_coord):
self.screen.fill((0,104,0))
t.drawTree((x, y))
但是我收到以下错误:
File "unnamed.py", line 26, in updateMap
for x, y in range(self.x_coord), range(self.y_coord):
ValueError: need more than 0 values to unpack
如果有人能为我指明正确的方向并以正确的方式做到这一点,我将不胜感激。谢谢。
编辑:我已经将我的代码编辑成上面的代码,以遍历每个坐标,如果 playerPostion 是 0,5,那么迭代将进行 (0,1) (0,2) (0,3) (0,4 ) (0,5) -- 但是虽然我没有收到任何错误,但似乎树没有正确绘制。谢谢..这似乎是答案,除了我的编码是错误的。
我认为这是你想要的:
from itertools import product
self.x_coord, self.y_coord = playerPosition #playerPosition is a tuple
t = Tree(self.screen)
for x,y in product(range(self.x_coord+1), range(self.y_coord+1)):
self.screen.fill((0,104,0))
t.drawTree((x, y))
也许如果你改变:
self.x_coord = 0
self.y_coord = 0
playerPosition = self.x_coord, self.y_coord
至:
self.x_coord, self.y_coord = playerPosition
然后你得到玩家位置 x 和 y 到 self.x_coord 和 self.y_coord
要迭代 x 和 y 的每个组合,您需要在 x 范围内的循环内放置一个 y 范围内的循环
for x in range(self.x_coord):
for y in range(self.y_coord):
self.screen.fill((0,104,0))
t.drawTree((x, y))
我认为 OP 想要遍历 X co-ordinates 的范围和 Y co-ordinates 的范围来为每种情况创建一个 (x,y)。
for x in range(self.x_coord):
for y in range(self.y_coord):
print(x, y)
使用内置的 Python zip 函数,假设两个可迭代对象的长度相同。如果不是,那么您需要先进行一些消毒以确保它们是正确的。
for x, y in zip(range(self.x_coord), range(self.y_coord))