您现在的位置是:网站首页>Python编程Python编程

使用in匹配数组中Python对象的属性

少儿编程网2019-03-23 16:49:35Python编程 人已围观 来源: -用户投稿

简介使用列表推导会构建一个临时列表,如果搜索的序列很大,它可能会占用你所有的内存。即使序列不大,构建列表意味着在in开始搜索之前迭代整个序列。

问:

我不记得我是不是在做梦,但我似乎记得有一个功能可以让我这样做,ISz少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

foo in iter_attr(array of python objects, attribute name)

我查看了文档,但这种事情不属于任何明显列出的标题ISz少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

答:

使用列表推导会构建一个临时列表,如果搜索的序列很大,它可能会占用你所有的内存。即使序列不大,构建列表意味着在in开始搜索之前迭代整个序列ISz少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

通过使用生成器表达式可以避免临时列表:ISz少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

foo = 12
foo in (obj.id for obj in bar)

现在,只要obj.id == 12接近开始bar,搜索就会很快,即使bar是无限长。ISz少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

正如@Matt建议的那样,hasattr如果任何一个对象bar都缺少一个id属性,那么使用它是个好主意ISz少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

foo = 12
foo in (obj.id for obj in bar if hasattr(obj, 'id'))

相关文章:

支持一下 ( )查看更多相似文章

使用in匹配数组中Python对象的属性

      匿名评论
    • 评论
    人参与,条评论
    使用in匹配数组中Python对象的属性

客服在线

服务时间

周一至周日 9:00-21:00