python - 在 Python 中过滤掉奇数并将它们平方成一个元组
问题描述
这是一个学校作业的问题,感谢您指出我的错误的任何帮助。
首先,关于map()
Python 中的函数,我的任务是(不可选择)重新定义它以使其特定于一个元组:
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)
PythonSyntaxError
之前以逗号返回给我 a tpl
。谁能指出这可能是什么问题?我也必须写一个else
条件吗?我尝试添加else x
,但只返回第一个值的整数值。
解决方案
def map(fn, seq):
if seq == ():
return ()
else:
return (fn(seq[0]),) + map(fn, seq[1:])
def square_odd(tpl):
return map(lambda x: x**2 if x%2 else x, tpl)
t = (1,2,3,4,5)
print(square_odd(t))
我已经这样做了,输出是(1, 2, 9, 4, 25)
.
PS 语法错误引发,因为三元运算符A if condition else B
不能用作A if condition
推荐阅读
- hive - 尝试将 CSV 加载到 Hive 时出现 NullPointerException
- c# - 如何使用 C# 按值获取 XML 节点列表
- blazor-webassembly - 无法静默刷新安全令牌、Azure B2C、Blazor WASM
- c++ - 我在从 C++ 中的文件中获取值时遇到了一个小问题
- database - Oracle impdp 将一个模式重新映射到多个模式失败,“参数值无效,'remap_schema”
- javascript - 从头开始的自定义排序方法需要一个比较器?
- python - 获取被脚本标签包围的json,在python中使用bs4
- ssas - SSAS 多维数据集 - 度量和维度的排序
- github - 如何为组织制作 github 页面
- ruby-on-rails - Heroku 上的 Rails - 没有记录错误,在本地工作,但没有来自网络的响应