在 map 中使用计数器,在 Python 中使用 lambda

Using counter in map, lambda in Python

提问人:New2905 提问时间:11/16/2023 最后编辑:New2905 更新时间:11/16/2023 访问量:65

问:

我需要在不使用循环的情况下创建此列表 [“1”, “12”, “123”, “1234”, “12345”, ..., “123456789”]。如何使用 map、lambda 函数来做到这一点?

我可以像下面的代码一样做到这一点,但这不是我需要的:

lst = []
        num = ""
        for i in range(1,10):
            num += str(i)
            lst.append(num)
        print(lst)

我也试过这个: lst = list(map(lambda x: str(x), range(1,10))) , 但我得到了 ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 而不是 [“1”, “12”, “123”, “1234”, “12345”, ..., “123456789”]。

Python 字典 lambda

评论

0赞 ewokx 11/16/2023
你还没有问问题。
0赞 Ignatius Reilly 11/16/2023
为什么?有什么理由因为 map 和 lambda 函数在这里会更好吗?您是否尝试过使用 map 和 lambda 的东西?
0赞 New2905 11/16/2023
@IgnatiusReilly我只是在学习 map 和 lambda。我试过这个: lst = list(map(lambda x: str(x), range(1,10))) 我得到了 ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 而不是 [“1”, “12”, “123”, “1234”, “12345”, ..., “123456789”]
0赞 Ignatius Reilly 11/16/2023
@New2905编辑您的问题以添加您尝试过的内容。恢复一些反对票可能会有所帮助:)

答:

0赞 Diego Torres Milano 11/16/2023 #1

也许

[e[:n] for n, e in enumerate(["123456789"]*10, 1)]

但不是 map 或 lambda。

0赞 blhsing 11/16/2023 #2

你的尝试是一个好的开始,但为了产生一串连接在一起的增量数字,你可以将另一个生成器映射到并将它们连接起来:list(map(lambda x: str(x), range(1,10)))rangestr''.join

list(map(lambda n: ''.join(map(str, range(1, n + 1))), range(1, 10)))

演示:https://ideone.com/zbOTvh