假设我在python中有一个函数,该函数返回其输入2的幂
def f(x):
return x**2
假设我还有一个整数1,2,3,4,5的向量
I = asarray(list(range(1,6)))
现在,我想使用来自f
的所有输入来评估函数I
,结果应该在尺寸为5的向量中(Python中为1x5数组)。我的期望结果是:[1,4,9,16,25]
。
是否可以使用for
或其他任何循环获得此结果?
我使用了array
软件包
答案 0 :(得分:4)
直接从pythontips网站...
使用map
函数!
squared = list(map(lambda x: x**2, I))
如果要在map
函数中使用函数,只需执行squared = list(map(f, I))
。
答案 1 :(得分:3)
通常有两种经典方法将函数应用于可迭代对象的所有元素并将结果存储在列表中。较灵活的是list comprehension:
result = [f(x) for x in range(1, 6)] # the upper bound is exclusive!
另一个选项是map
,它允许使用更简洁的符号,特别是如果您有可用的命名函数并且不需要使用lambda之类的话:
result = map(f, range(1, 6)) # Python2: returns list
result = list(map(f, range(1, 6))) # Python3: return iterator, so cast