0

我必须从我的函数中返回许多变量:

a = 5
b = 6
c = 8
d = 6
...
return a,b,c,d,e,f,g,h

问题是我想通过数组来保存代码行:

for (...):
  ar[x] = ... # For x = a,b,c,d,e, ...

但是我必须以'return a,b,c,d,e'的格式返回变量,我不想把它写成:

return ar[a], ar[b], ar[c], ...

那么我可以使用生成器吗?如何使用?像这样的东西:

return item for item in len(ar)
4

4 回答 4

4

当你“返回多个变量”时,你实际上只是返回一个元组。你可以这样做:

return tuple(ar)

甚至

return ar

当然,假设您的数组包含您想要以正确顺序返回的所有内容,并且仅此而已。

很高兴看到更多代码,但很可能如果您可以使用循环填充该列表,那么无论如何它在语义上都是一个值(同质集合)。

于 2013-12-05T10:37:01.753 回答
0
def values():
    a = 3
    b = 5
    c = 9
    d = 3
    e = 5

    return(a, b, c, d, e)

a1 = values()
print list(a1)

您可以编辑上述函数以返回变量元组

tuple(a,b,c,d,e) 
于 2013-12-05T10:48:55.880 回答
0

使用生成器表达式和tuple

return tuple(ar[x] for x in (a,b,c,d,e))

如果索引是连续的,那么您可以使用切片:

return tuple(ar[2:8])   #If `ar` is a already a tuple then remove the tuple call

如果要返回整个元组/列表本身,则只需按原样返回:

return ar   #or return tuple(ar)

请注意,返回 atuple不是强制性的,这里有更多讨论:Python:返回元组还是列表?

于 2013-12-05T10:37:56.830 回答
0

你可以这样做:

def func(x):
    # do something
    lis = (#your values)
    return lis
a,b,c,d,e = func(x)

这会将值作为元组返回,并在另一端解包

于 2013-12-05T10:38:38.710 回答