【发布时间】:2022-01-24 11:13:00
【问题描述】:
为什么这个问题没有简单的解决方案是因为我只需要使用pure functions来解决。
仅使用 Python 函数式编程页面 (https://docs.python.org/3/howto/functional.html#) 中的纯函数,如何创建一个包含值的列表? 如果我们想创建一个包含值的列表它,我们(在代码中)只是这样做
x = [1]
我不认为[] 是我们在此处查看的函数的一部分,因为它没有签名并且不能像任何其他函数一样调用。
仅使用函数来做到这一点并不是那么简单。我的一个想法是使用list() 创建一个新列表,然后将值附加到它。但是list().append 是可变的,不会返回包含项目的新列表或列表。
我真正想做的是将["a","b","c"] 变成[["a"],["b"],["c"]],具有上述限制。
已经提出了其他建议,例如创建我自己的(纯)函数来做我想做的事情:
def create_list(value) -> list:
return [value]
然后只需执行map(create_list, ["a","b","c"]) 即可获得解决方案。
但这是一个定制函数,不是来自任何 python 包函数(在https://docs.python.org/3/howto/functional.html 内,如前所述)
【问题讨论】:
-
仅设置
x = [1]有什么“不起作用”? -
我不明白为什么要这样做
-
x = [1]是功能性的,但我需要使用纯函数。[]没有功能 -
@DavidMeu 是的,但这只是获取一个元组并转换为一个列表。还不如把列表转成自己
list([1])。 -
@RikardOlsson
[1]算作纯粹的功能性。它没有副作用。它创建一个对象并返回它。您可以使用像lambda *args: list(args)这样的 lambda 表达式,但它的作用完全相同
标签: python functional-programming