在列表中查找属性等于某个值(满足任何条件)的对象

我有对象清单。我想在此列表中找到一个属性(或方法结果-任意)等于的(第一个或任何对象)对象value

找到它的最佳方法是什么?

这是测试用例:

  class Test:

def __init__(self, value):

self.value = value

import random

value = 5

test_list = [Test(random.randint(0,100)) for x in range(1000)]

# that I would do in Pascal, I don't believe isn't anywhere near 'Pythonic'

for x in test_list:

if x.value == value:

print "i found it!"

break

我认为使用生成器reduce()不会有任何区别,因为它仍然会遍历list。

ps .:方程式to value只是一个例子。当然我们要获得满足任何条件的元素。

回答:

next((x for x in test_list if x.value == value), None)

这将从列表中获取与条件匹配的第一项,None如果没有匹配项,则返回。这是我首选的单表达式形式。

然而,

for x in test_list:

if x.value == value:

print "i found it!"

break

天真的循环中断版本完全是Pythonic的-简洁,清晰和高效。为了使其与单线行为相匹配:

for x in test_list:

if x.value == value:

print "i found it!"

break

else:

x = None

如果你不在循环之外,这将分配None给。xbreak

以上是 在列表中查找属性等于某个值(满足任何条件)的对象 的全部内容, 来源链接: utcz.com/qa/434113.html

回到顶部