接收并返回多个值的函数

时间:2015-02-11 14:53:46

标签: python arrays function if-statement

假设我有一个计算并返回值的函数:

h = 4.13566733*10**-15
c = 2.99792458*10**(8+9)


def func(x):
    for i in w:
        A = h*c/i
    return A


w = [1]
print func(w)

精细。但如果w是一个更大的数组,请说:

w = [1 ,2, 3, 4]

func返回w(4)中的最后一个值。不可思议的是,这是for循环中的最后一项。 但是如何让func返回一个包含所有4个值的数组,如:

[1239, 619, 413, 309]

...

4 个答案:

答案 0 :(得分:3)

Python支持传递多个参数,并返回多个值。也就是说,您可以将代码更改为:

def func(w):
    return [h*c/i for i in w]

如果你现在调用它,你可以获得所需的数组:

>>> w = [1 ,2, 3, 4]
>>> func(w)
[1239.8418743309974, 619.9209371654987, 413.2806247769991, 309.96046858274934]

对于使用多个参数进行调用并返回多个示例,请考虑以下示例方法,该方法需要2个输入并返回3个输出:

>>> def get_product_modulo_dividend(x, y):
...     return x*y, x%y, x/y
>>> get_product_modulo_dividend(100, 10)
(1000, 0, 10)

答案 1 :(得分:1)

让您的A列表并将每个结果附加到该列表

h = 4.13566733*10**-15
c = 2.99792458*10**(8+9)


def func(x):
    A = []
    for i in w:
        A.append(h*c/i)
    return A


w = [1,2,3,4]
print func(w)

输出:

[1239.8418743309974, 619.92093716549869, 413.2806247769991, 309.96046858274934]

答案 2 :(得分:1)

这类似于@mu发布的内容,但似乎你的函数在没有连接在一起的单个值上运行,并且可能更灵活地实现为仅将数字作为参数。

h = 4.13566733*10**-15
c = 2.99792458*10**(8+9)

def func(x):
  return h*c / x

w = [1,2,3,4]
print([func(x) for x in w])

答案 3 :(得分:0)

例如,您可以使用map

h = 4.13566733*10**-15
c = 2.99792458*10**(8+9)

def func(x):
  return h*c/x

w = [1,2,3]
print map(func, w)

将返回[1239.8418743309974,619.9209371654987,413.2806247769991]

你可以使用更优雅的方式(就我而言):

h = 4.13566733*10**-15
c = 2.99792458*10**(8+9)
w = [1,2,3]
result = map(lambda (x): h*c/x, w)

还有回报[1239.8418743309974,619.9209371654987,413.2806247769991]。