Python从其元组中删除一个函数

时间:2013-12-13 21:54:47

标签: python

抱歉这个糟糕的标题,很难用一行来解释。

好吧,我有这个代码,我在其中运行一个函数。 运行此功能后,我收到一个像这样的元组:

(Position(15,20),425)

现在我想要3个变量 - x,y,z来获取这些数字。 我试过了:

x,y,z = val

它不起作用。 我尝试从不同的方法, 仍然没有得到它,我得到这个错误:

ValueError : need more than 2 values to unpack

所以我意识到我需要打破这个位置。 我不知道怎么做......

有人能帮帮我吗?感谢

3 个答案:

答案 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)