MST

星途 面试题库

面试题:Python函数式编程如何优化数据处理流程

假设你有一个包含大量字典的列表,每个字典代表一个用户的信息,包括姓名、年龄、邮箱等。使用Python函数式编程方法,对这些数据进行处理,筛选出年龄大于30岁的用户,并将他们的姓名和邮箱提取出来形成新的列表。要求代码体现函数式编程的特性,如不可变数据、纯函数等。
46.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
users = [
    {'name': 'Alice', 'age': 25, 'email': 'alice@example.com'},
    {'name': 'Bob', 'age': 35, 'email': 'bob@example.com'},
    {'name': 'Charlie', 'age': 28, 'email': 'charlie@example.com'},
    {'name': 'David', 'age': 40, 'email': 'david@example.com'}
]


def filter_and_extract(users):
    def is_over_30(user):
        return user['age'] > 30

    def extract_name_email(user):
        return {'name': user['name'], 'email': user['email']}

    filtered_users = filter(is_over_30, users)
    result = list(map(extract_name_email, filtered_users))
    return result


result = filter_and_extract(users)
print(result)
  1. 首先定义了is_over_30函数,这是一个纯函数,用于判断用户年龄是否大于30岁。
  2. 接着定义了extract_name_email函数,也是纯函数,用于从用户字典中提取姓名和邮箱。
  3. 使用filter函数结合is_over_30函数筛选出年龄大于30岁的用户。
  4. 使用map函数结合extract_name_email函数对筛选后的用户提取姓名和邮箱,并将结果转换为列表。
  5. 整个过程遵循函数式编程中不可变数据(原始users列表未被修改)和纯函数的特性。