gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:12 25 4
gpt4 key购买 nike

我可以使用 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 expressionsstudent.age += 3statement .所以你不能在那里使用 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

关于python - 使用 lambda 函数更改属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com