【发布时间】:2020-09-23 16:39:17
【问题描述】:
这是一个学校作业的问题,感谢任何帮助指出我的错误。
首先,关于 Python 中的 map() 函数,我的任务是(不可选择)重新定义它以使其特定于一个元组:
def map(fn, seq):
if seq == ():
return ()
else:
return (fn(seq[0]),) + map(fn, seq[1:])
使用这个,我应该定义另一个函数square_odd(tuple),它接受一个包含整数的元组作为参数,并且只有当它们是奇数时才特别平方。本质上,对于 (5,6,7,8,9) 的元组输入,我应该返回 (25, 6, 49, 8, 81)。
我的想法是简单地利用lambda 编写一个函数,与if 配对以过滤掉奇数。这是我所拥有的:
def square_odd(tpl):
return map(lambda x: x*x if x%2 == 0, tpl)
Python 在tpl 之前的逗号处返回了SyntaxError。谁能指出这可能是什么问题?我也必须写一个else 条件吗?我尝试添加else x,但只返回第一个值的整数值。
【问题讨论】: