(Position(15,20),425)
现在我想要3个变量 - x,y,z来获取这些数字。 我试过了:
x,y,z = val
它不起作用。 我尝试从不同的方法, 仍然没有得到它,我得到这个错误:
ValueError : need more than 2 values to unpack
所以我意识到我需要打破这个位置。 我不知道怎么做......
有人能帮帮我吗?感谢答案 0 :(得分:3)
(假设Position(15,20)
是可迭代的并且恰好包含两个项目)你只需要在前两个变量周围加上括号。
以下是演示:
>>> tup = ((1,2),3)
>>> (x,y),z = tup
>>> x
1
>>> y
2
>>> z
3
>>>
答案 1 :(得分:0)
你的位置应该是可迭代的,返回(15,20),然后你也可以解压缩它
class Position (object):
def __init__(self, x, y): self.x, self.y = x, y
def __iter__(self): return iter((self.x, self.y))
(x, y), z = (Position(15,20),245)
# equals x = 15; y = 20; z = 245
答案 2 :(得分:0)
不对Position
做任何假设,你可以这样做:
pos, z = (Position(15,20),245)
是否可以
x, y = pos
取决于Position
的性质。正如其他答案所暗示的那样,如果它是一个命名元组,这是有效的。 Python代码越来越多地使用Namedtuples来返回这样的值。文档中使用的示例适用于Point(x,y)
。