首页 > 解决方案 > 如何从列表中取出某些项目

问题描述

我想从具有特定实例的列表中返回某些项目。

我对如何使用 isinstance 有点不清楚,但据我所知,这似乎是最好的方法。

animals = [Hen(0.25), Hen(0.6), Hen(1.0), Hen(8), Rooster(0.25), Rooster(0.6), Rooster(1.0), Cow(1.0), Goat(1.0), Duck(1.0)]


def get_class(animals):
    if not isinstance(animals, Hen):
        return NotImplemented
    return animals

我想让列表动物现在只有母鸡(0.25),母鸡(0.6),母鸡(1.0),母鸡(8)。任何帮助将不胜感激,但我更喜欢指导而不是答案。

标签: python

解决方案


您可能可以使用列表推导来实现此目的:

new_animals = [x for x in animals if isinstance(x, Hen)]

这基本上构建了一个仅包含作为 Hen 类实例的项目的新列表。

有点不相关,但是要以Hen()您想要的干净方式表示类,您可以执行以下操作:

In [25]: class Hen():
    ...:     def __init__(self, number):
    ...:         self.a = number
    ...:     def __repr__(self):
    ...:         return "Hen({})".format(self.a)
    ...:

In [26]: h = Hen(4.5)

In [27]: h
Out[27]: Hen(4.5)

希望这可以帮助!


推荐阅读