如何用Python在map中编写指令?

2024-09-27 09:28:52 发布

您现在位置:Python中文网/ 问答频道 /正文

输入是一个列表:[“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中编写指令,以便有效地增加计数器。或关于偏函数有什么我应该知道,但我不知道的吗?如何使用函数式编程解决这类问题


Tags: 函数map列表mywithitresultpartial

热门问题