Python:使用带多个值的参数计算函数

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

假设我在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
或任何其他循环的情况下得到这个结果吗

我直接从网站上使用了
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