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

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

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

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

问:

我不记得我是不是在做梦,但我似乎记得有一个功能可以让我这样做,

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

我查看了文档,但这种事情不属于任何明显列出的标题

答:

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

通过使用生成器表达式可以避免临时列表:

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

现在,只要obj.id == 12接近开始bar,搜索就会很快,即使bar是无限长。

正如@Matt建议的那样,hasattr如果任何一个对象bar都缺少一个id属性,那么使用它是个好主意

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

扩展阅读:

推荐阅读:孩子从小背过的诗将如何影响TA的一生

  • ▋总有一天,孩子会与背过的诗相遇朋友这个问题,让我想起另外一个小故事。我的朋友小梁,40岁生日的时候,决定去挑战珠峰。在大本营,她因为高原反应无法入睡,痛苦难忍,没有网络,没有电视,她通宵默诵唐诗,分散注意力。楚塞三湘接,江流天地外,九曲黄河万里沙,一片孤城万仞山。白云满鄣来,黄沙暗天起。关山四面绝,故乡几千里。从王维的《汉江临泛》,到刘禹锡《浪淘沙》,从王之涣的《凉州词》,到刘昶的《断句》那些记忆全部乱了,在她脑海里,她跳着背。天亮的时候,她走出帐篷,看着眼前的壮丽景观,突然感受到了唐诗的气势,一种类似航拍的气势。她懂得了,唐诗的艺术并非忽视时间的流失,而是让流光本身成为美好。回到我们该不该让孩子背古诗?的问题上来说,我只想说,假如小梁没有背过唐诗,她生命中,也许永远无法有这一刻的这种体验。孩子不懂诗,我们年纪小的时候,在父母和老师的强压下,牙牙学语也好,机械记忆也好,都是一知半解,囫囵吞枣。可以领悟到浅显的韵律美,就已经是极高的悟性。但总有一天,他会与背过的古诗重....>>查看全文

支持一下吧 ( )

文章评论

      匿名评论
    • 评论
    人参与,条评论
    少儿编程网

客服在线

服务时间

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