3、模仿map和filter的运行逻辑,自定义(def)并测试自己的mymap和myfilter高阶函数,要求实现类似的功能(注意:不能在自定义函数里面再次调用map等库函数)
时间: 2024-10-19 22:08:17 浏览: 22
要创建自定义的`mymap`和`myfilter`函数,我们可以模仿`map()`和`filter()`的工作原理。这两个函数都是用于操作序列的高阶函数,它们接收一个函数作为参数,然后应用这个函数到序列的每个元素上。
**mymap 示例**(类似于map(),但不使用内置函数):
```python
# 自定义 map-like 功能
def my_map(function, sequence):
result = []
for item in sequence:
result.append(function(item))
return result
# 定义一个简单的映射函数,比如平方数
def square(x):
return x * x
# 测试自定义的映射函数
numbers = [1, 2, 3, 4, 5]
squared_numbers = my_map(square, numbers)
print(squared_numbers) # 输出:[1, 4, 9, 16, 25]
```
**myfilter 示例**(类似于filter(),筛选序列中满足条件的元素):
```python
# 自定义 filter-like 功能
def my_filter(condition, sequence):
result = []
for item in sequence:
if condition(item):
result.append(item)
return result
# 定义一个简单的过滤函数,如仅保留偶数
def is_even(n):
return n % 2 == 0
# 测试自定义的过滤函数
numbers = [1, 2, 3, 4, 5]
even_numbers = my_filter(is_even, numbers)
print(even_numbers) # 输出:[2, 4]
```
阅读全文