Functional programming 所有循环和if语句都可以被map、filter和reduce替换吗?
有人告诉我你大部分时间都可以这样做,我想知道是否有某种证据证明你一般都可以这样做。(假设我们使用的是像Python这样的语言,它有map、filter和reduce函数。)假设您可以将任何函数传递到Functional programming 所有循环和if语句都可以被map、filter和reduce替换吗?,functional-programming,Functional Programming,有人告诉我你大部分时间都可以这样做,我想知道是否有某种证据证明你一般都可以这样做。(假设我们使用的是像Python这样的语言,它有map、filter和reduce函数。)假设您可以将任何函数传递到map,filter和reduce,是的。你可以用它做任何事情(尽管有些可能需要一些技巧) 例如,一个稍难模拟的示例,因为您需要保存状态(可以使用reduce完成,但不能在1语句中完成): 功能变体: min_ = reduce(lambda x, y: min(x, y), items, items
map
,filter
和reduce
,是的。你可以用它做任何事情(尽管有些可能需要一些技巧)
例如,一个稍难模拟的示例,因为您需要保存状态(可以使用reduce完成,但不能在1语句中完成):
功能变体:
min_ = reduce(lambda x, y: min(x, y), items, items[0])
max_ = reduce(lambda x, y: max(x, y), items, items[0])
sum_ = reduce(lambda x, y: x + y, items, items[0])
avg = sum_ / len(items)
实际上。。。在1个reduce语句中想到了一种方法:
min_ = max_ = sum_ = items[0]
i = 0.
for item in items:
i += 1
min_ = min(item, min_)
max_ = max(item, max_)
sum_ += item
avg = sum_ / i
min_, max_, sum_ = reduce(lambda x, y: (min(x[0], y), max(x[1], y), x[2] + y), items, [items[0]] * 3)
avg = float(sum_) / len(items)
可以传递哪些函数?我可以通过映射一个虚拟的单元素列表并使用ifs和循环传递任意代码来欺骗您的问题陈述。