python - 如何从列表中取出某些项目
问题描述
我想从具有特定实例的列表中返回某些项目。
我对如何使用 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)。任何帮助将不胜感激,但我更喜欢指导而不是答案。
解决方案
您可能可以使用列表推导来实现此目的:
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)
希望这可以帮助!
推荐阅读
- c# - 错误无法从程序集“dotless.Core,版本=1.5.3.0”加载类型“dotless.Core.configuration.WebConfigConfigurationLoader”
- node.js - centos 7如何卸载node js
- r - 如何使用cowplot创建图表而不激活空白窗口
- javascript - gulp-imagemin 如何将压缩值获取到变量
- arrays - 先排列奇数,再排列偶数。奇偶顺序不应该改变
- port - 每 15 分钟捕获一次使用端口 6881 的进程的 pid
- audit.net - 使用 AuditIdentityDbContext 在 asp.net mvc 中的 Audit.net 框架性能
- css - SVG背景图像缩放问题
- java - 在 pdfbox 中添加网页图像
- ruby-on-rails - Rails 中有类似 .NET 的数据注释的东西吗?