【问题标题】:Generate variables for return生成返回变量
【发布时间】:2013-12-22 06:05:21
【问题描述】:

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

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)

【问题讨论】:

    标签: python return multiple-results


    【解决方案1】:

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

    return tuple(ar)
    

    甚至

    return ar
    

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

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

    【讨论】:

    • 谢谢,我不知道元组
    【解决方案2】:

    使用生成器表达式和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)
    

    请注意,返回 tuple 不是强制性的,在此处进行更多讨论:Python: Return tuple or list?

    【讨论】:

      【解决方案3】:

      你可以这样做:

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

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

      【讨论】:

        【解决方案4】:
        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) 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-24
          • 2019-07-28
          • 1970-01-01
          • 2020-08-26
          • 2021-02-13
          • 2017-07-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多