在 Python 函数中返回多个列表
Posted
技术标签:
【中文标题】在 Python 函数中返回多个列表【英文标题】:Return multiple lists in Python function 【发布时间】: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、d 和 layers 以便我能够例如打印 - 或使用 - 例如的值d 列表中的第二项?
print d[1]
【问题讨论】:
【参考方案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
返回一个包含rho
、c
、k
、d
和layers
的元组。
完成此操作后,您可以通过解包访问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语句中不需要括号。以上是关于在 Python 函数中返回多个列表的主要内容,如果未能解决你的问题,请参考以下文章
Python学习笔记十一_函数返回多值列表生成式循环多变量入参格式声明