我可以使用 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
