我可以将元组扩展到任何地方吗?

时间:2018-10-15 18:48:39

标签: python

如果我有一个返回一堆东西的函数,我只想抓住它返回的一个东西并丢弃其余的东西,而不必先分配它然后删除它。在使用大型数据集时,我试图节省内存。

def function(a, b)
    return a, b

x, _ = function(A, B)

可以这样做吗?

2 个答案:

答案 0 :(得分:4)

你可以做

def function(a, b):
    return a, b

x = function(A, B)[0]

中间元组的引用计数器应为零,因此将其删除。

答案 1 :(得分:0)

您的代码将运行并产生您期望的值:x将被分配A中的值。但是,在Python中,_是有效的变量名,因此您还要创建一个名为_的变量,并在B中为其赋值。似乎只希望将第一个值分配给变量,因此这可能对您不利。请注意,将代码更改为:

x = function(A, B)

这将意味着x等于(A, B),这也不是您想要的。

因此,您需要问自己的问题是:为什么此方法返回两个值,为什么我丢弃其中一个?如果这是您编写的方法,那么将功能拆分为单独的方法也许很有意义,这样可以避免“浪费”返回的值,或者您实际上需要第二个值,而您并没有想到那么远。当然,如果此方法实际上不是您的方法,那么这很重要,在这种情况下,使用_作为占位符可能是您的最佳选择。