输入是一个列表:[“asdf”、“ghjk”、“lmnop”、“zyx”]
我特别需要在列表的所有元素上应用一个函数(因此,我应该使用map)。该函数应该执行类似于f(x,k)=x+k的操作,其中k是一个等于1的常数,x是一个计数器(因此,x一开始是0,当逐步遍历列表时,它应该以某种方式递增,但如何递增?)
假设这些,预期输出应该是:[1,2,3,4]
from functools import partial
def f(x, k):
return x + k
def with_partial(my_list, k=1):
func = partial(f, k=k) # partial object which acts as a function when called
x = 0 # counter
# map -> applies a funciton over all elements of my_list
rez = list(map(lambda it: (func(x)), my_list))
# if I want to increment it, it should look like: rez = list(map(lambda it: x = (func(x)), my_list))
print("Result with partial: " + str(rez))
if __name__ == "__main__":
with_partial([5, 6, 7])
with_partial(["asdf", "ghjk", "lmnop", "zyx"])
但结果是:
Result with partial: [1, 1, 1]
Result with partial: [1, 1, 1, 1]
但我希望它是这样的:
Result with partial: [1, 2, 3]
Result with partial: [1, 2, 3, 4]
对于这种类型的问题,我可以很容易地使用列表理解,但我需要了解如何在map中编写指令,以便有效地增加计数器。或关于偏函数有什么我应该知道,但我不知道的吗?如何使用函数式编程解决这类问题
目前没有回答
相关问题 更多 >
编程相关推荐