接受和 returns 多个值的函数
function that takes in and returns multiple values
假设我有一个函数可以计算 return 一个值:
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]
w (4) 中最后一个值的 func returns。可以理解,因为这是 for 循环中的最后一项。
但是我怎样才能使 func return 成为一个包含所有 4 个值的数组,例如:
[1239, 619, 413, 309]
??
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 个输入和 returns 3 个输出:
>>> def get_product_modulo_dividend(x, y):
... return x*y, x%y, x/y
>>> get_product_modulo_dividend(100, 10)
(1000, 0, 10)
将您的 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]
这与@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])
您可以使用 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)
将 return [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)
是return也是[1239.8418743309974, 619.9209371654987, 413.2806247769991].
假设我有一个函数可以计算 return 一个值:
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]
w (4) 中最后一个值的 func returns。可以理解,因为这是 for 循环中的最后一项。 但是我怎样才能使 func return 成为一个包含所有 4 个值的数组,例如:
[1239, 619, 413, 309]
??
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 个输入和 returns 3 个输出:
>>> def get_product_modulo_dividend(x, y):
... return x*y, x%y, x/y
>>> get_product_modulo_dividend(100, 10)
(1000, 0, 10)
将您的 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]
这与@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])
您可以使用 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)
将 return [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)
是return也是[1239.8418743309974, 619.9209371654987, 413.2806247769991].