Skip to main content
 首页 » 编程设计

python之使用 lambda 函数更改属性的值

2025年05月04日9java哥

我可以使用 lambda 函数遍历类对象列表并更改属性值(针对所有对象或满足特定条件的对象)吗?

class Student(object): 
    def __init__(self,name,age): 
        self.name = name 
        self.age = age 
 
student1 = Student('StudOne',18) 
student2 = Student('StudTwo',20) 
student3 = Student('StudThree',29) 
students = [student1,student2,student3] 
 
new_list_of_students = map(lambda student:student.age+=3,students) 

请您参考如下方法:

不幸的是,这是不可能的,因为 body of a lambda只允许 simple expressions而 student.age += 3 是 statement .所以你不能在那里使用 lambda。但是,您仍然可以使用 map 解决方案:

def incrementAge (student): 
    student.age += 3 
    return student 
 
students2 = map(incrementAge, students) 

请注意,students2 将包含与 students 相同的学生,因此您实际上不需要捕获输出(或从 incrementAge< 返回一些内容)。另请注意,在 Python 3 中,map 返回一个生成器,您需要先对其进行迭代。您可以在其上调用 list() 来执行此操作:list(map(…))。

最后,一个更好的解决方案是使用一个简单的循环。这样,您就没有需要函数或创建重复学生列表的开销,而且您的意图也会非常明确:

for student in students: 
    student.age += 3