Python:使用带多个值的参数计算函数
假设我在python中有一个函数,它返回其输入的2的幂Python:使用带多个值的参数计算函数,python,arguments,Python,Arguments,假设我在python中有一个函数,它返回其输入的2的幂 def f(x): return x**2 假设我有一个整数向量1,2,3,4,5 I = asarray(list(range(1,6))) 现在我想用I的所有输入计算函数f,结果应该是5维向量(Python中的1x5数组)。我想要的结果是:[1,4,9,16,25] 我可以在不使用for或任何其他循环的情况下得到这个结果吗 我直接从网站上使用了arraypackage 使用map功能 squared = list(map(l
def f(x):
return x**2
假设我有一个整数向量1,2,3,4,5
I = asarray(list(range(1,6)))
现在我想用I
的所有输入计算函数f
,结果应该是5维向量(Python中的1x5数组)。我想要的结果是:[1,4,9,16,25]
我可以在不使用for
或任何其他循环的情况下得到这个结果吗
我直接从网站上使用了array
package
使用map
功能
squared = list(map(lambda x: x**2, I))
如果要在
map
-函数中使用函数,只需执行squared=list(map(f,I))
通常有两种经典方法将函数应用于iterable的所有元素并将结果存储在列表中。更灵活的是:
另一个选项是允许更简洁的表示法,特别是如果您有一个命名函数可用,并且不需要使用lambda或类似工具:
result = map(f, range(1, 6)) # Python2: returns list
result = list(map(f, range(1, 6))) # Python3: return iterator, so cast
您的
列表(范围(1,5))
只会给出数字1到4,因为范围函数不包括上边界!为什么不使用循环呢?您可以使用map()
或列表理解,但这些只是伪装的循环。或者您也可以使用NumPy模块,它具有类似于square()
的方法,可以自动应用于数组中的每个元素,但这也只是一个伪装的循环。result=[f(x)表示范围(1,6)中的x)]
谢谢。这解决了我上面提到的简化问题。如果我的函数依赖于两个或多个变量,并且其中一个变量是固定的,该怎么办?例如,f(x,y)=x^y,我想保持y固定在2,然后你可以定义f(x,2)=x^2
,并调用与上面相同的函数!为什么不使用列表?我知道OP说他们不需要循环,但如果绑定其中一个参数,使用起来更简单。
result = map(f, range(1, 6)) # Python2: returns list
result = list(map(f, range(1, 6))) # Python3: return iterator, so cast