如何查找对象列表中字符串的最大长度(Python)

slo*_*612 3 python

class XYZ:

    def __init__(self, name, score):
        self.name = name
        self.score = score


l = []     # l is the list of objects

l.append(XYZ('Anmol', 10))
l.append(XYZ('Andrew', 200))
l.append(XYZ('Johnson', 3000))
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,l是包含三个对象的对象列表,每个对象都有一个名称(字符串)和一个分数(整数),那么我如何找出该对象列表中名称的最大长度是多少

在我们的程序中,名字的最大长度是Johnson的名字,它的长度是7。所以程序应该输出7。怎么做呢?

sad*_*ave 7

使用list comprehension和不使用 时lambda,它看起来像这样:

 result = max(len(x) for x in l)
Run Code Online (Sandbox Code Playgroud)

本质上,这会执行以下操作(它有助于从右到左分解列表推导式):

  1. in l: 迭代l
  2. for x:在迭代期间将 的每个元素分配l给变量x
  3. len(x)x:获取列表中每个变量的长度l
  4. list comprehensions将输出自然地放入列表格式,因此此时我们有一个所有字符串长度的列表,例如:

    [5, 6, 7]
    
    Run Code Online (Sandbox Code Playgroud)
  5. max(...):简单地从长度列表中获取最大的数字

希望这个解释有助于理解正在发生的事情。