You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何返回腿部数量大于指定值的animal类实例name属性列表,可一行实现吗?

问题说明

现有定义不完整的Python类和待补全函数,要求补全leg_count函数:传入animal实例列表和阈值参数multiple后,返回腿部数量大于multiple的实例的name属性组成的列表,同时判断该功能是否可以通过一行代码实现。

原始代码如下:

class animal():
  def__init__(self, name, species, legs):
     self.name = name
     self.breed = species
     self.legs = legs
  def__eq__(self, other):
     return self.breed == other.species and self.name == other.name
  def__repr__(self):
     return f"{self.name}: {self.speies}: {self.legs}"

def leg_count(animals, multiple):
    return 

测试用例如下:

group1 = animal("Adam","dog",4)
gruop2 = animal("Besty","cat", 4)
group3 = animal("Alex","bird", 2)
animals = [group1, group2, group3]
leg_count(animals, 4)

前置修正:原始代码的笔误修复

原始代码存在多处笔误,运行前需要先修正:

  • 魔术方法名和def关键字之间缺少空格,比如def__init__需要改为def __init__
  • __repr__方法中访问了不存在的属性self.speies,实际存储物种的属性是self.breed
  • __eq__方法中错误访问other.species,其他animal实例的物种属性为breed,需要改为other.breed
  • 测试用例中变量名拼写错误:gruop2需要改为group2

修正后的完整类代码:

class animal():
    def __init__(self, name, species, legs):
        self.name = name
        self.breed = species
        self.legs = legs
    def __eq__(self, other):
        return self.breed == other.breed and self.name == other.name
    def __repr__(self):
        return f"{self.name}: {self.breed}: {self.legs}"

leg_count函数实现

常规写法

def leg_count(animals, multiple):
    result = []
    for item in animals:
        if item.legs > multiple:
            result.append(item.name)
    return result

一行实现写法

该功能完全可以通过一行代码实现,直接使用Python列表推导式即可:

def leg_count(animals, multiple):
    return [item.name for item in animals if item.legs > multiple]

测试用例运行结果

测试用例中传入阈值为4,所有animal实例的腿部数量都≤4,因此运行leg_count(animals, 4)返回结果为[]。
如果调整阈值为2,返回结果为['Adam', 'Besty']。


内容的提问来源于stack exchange,提问作者JJ.QQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:39:02