【发布时间】:2017-01-17 21:36:47
【问题描述】:
我是 Python 中 lambda 和 reduce 的新手,我不明白为什么这个函数不起作用:
def my_func(str):
symbols = ['_', '-']
return reduce(lambda x, y: ' ' + y if x in symbols else x + y, str)
my_func('foo_bar-baz') # 'foo_bar-baz'
我希望输出是'foo bar baz'。
有人明白这里出了什么问题吗?
【问题讨论】:
-
请记住,
str是内置的,因此您可能不应该将变量/参数命名为 -
if x in symbols-x?为什么x? -
你为什么期待
foo bar baz?您期望将 lambda 应用于输入'foo'和'_'的结果是什么?将 lambda 应用于输入'foo'和'_'的实际结果是什么? -
为什么不使用
replace或re.sub