【问题标题】:Return multiple lists in Python function在 Python 函数中返回多个列表
【发布时间】:2013-10-28 11:31:03
【问题描述】:

我是 Python 新手,正在尝试创建一个函数,该函数根据用户输入创建具有不同材料参数的列表,如下面的代码所示。

def material():
    layers = int(raw_input("State the number of material layers in the wall (0 for default material): "))

    rho = [] # Density [kg/m3]
    c = [] # Heat capacity [J/(kg K)] 
    k = [] # Heat conductivity [W/(m K)]
    #a = [] # Thermal diffusivity [m2/s]
    d = [] # Thickness of material [m]

    # Saveing material properties
    if layers == 0:
        rho.append(2300)
        c.append(900)
        k.append(1.6)
        d.append(3.2)
        layers = 1

    else:
        for i in range(layers):
            print "\n" "Define thermal properties for material", i+1,"(starting from left)"
            rho.append(float(raw_input("Density [kg/m3]: ")))
            c.append(float(raw_input("Heat capacity [J/(kg K)]: ")))
            k.append(float(raw_input("Heat conductivity [W/(m K)]: ")))
            d.append(float(raw_input("Thickness [m]: ")))

    return ???

我应该如何返回 rho、c、k、dlayers 以便我能够例如打印 - 或使用 - 例如的值d 列表中的第二项?

print d[1]

【问题讨论】:

    标签: python list function return


    【解决方案1】:

    我应该如何返回 rho、c、k、d 和 layers [...]?

    简单地做:

    return rho, c, k, d, layers
    

    然后你会这样称呼它

    rho, c, k, d, layers = material()
    print d[1]
    

    请注意,您返回的内容越多,您就越有可能希望将它们全部包装成某种结构,例如 dict(或 namedtuple,或类等)

    【讨论】:

    • Obs.:这个功能实际上是返回一个tuple,然后做一个多重赋值语句。例如,您也可以使用S = material(); print S[3][1] 来实现相同的结果。
    • @OdraEncoded:非常正确。我倾向于不对异类返回结果使用元组索引,因为我很容易混淆哪个变量对应哪个索引。
    • 上帝,你跑得很快。太感谢了。我可以看到我的问题更多是关于如何调用该函数——但我现在明白了。再次感谢大家。干杯。
    【解决方案2】:

    return 可以返回多个值,如果你用逗号分隔它们:

    return rho, c, k, d, layers
    

    这将使material 返回一个包含rhockdlayers 的元组。

    完成此操作后,您可以通过解包访问material 返回的值:

    rho, c, k, d, layers = material()
    

    这是一个演示:

    >>> def func():
    ...     return [1, 2], [3, 4], [5, 6]
    ...
    >>> a, b, c = func()
    >>> a
    [1, 2]
    >>> b
    [3, 4]
    >>> c
    [5, 6]
    >>> a[1]
    2
    >>>
    

    【讨论】:

      【解决方案3】:
      def return_values():
          # your code
          return list1, list2
      

      并得到如下的值

      value1, value2 = return_values()
      

      【讨论】:

        【解决方案4】:
        def function_returning_multiple_list():
          l1=[]
          l2=[]
          l3=[]
          return (l1,l2,l3)
        
        
        def another_fucntion():
          list1,list2,list3=function_returning_multiple_list()
          print list2
        

        【讨论】:

        • 注意return语句中不需要括号。
        猜你喜欢
        • 2020-05-03
        • 2013-10-22
        • 1970-01-01
        • 2020-07-21
        • 2019-05-10
        • 2018-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多