我有对象清单。我想在此列表中找到一个属性(或方法结果-任意)等于的(第一个或任何对象)对象value。
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 it's anywhere near 'Pythonic' for x in test_list: if x.value == value: print "i found it!" break
我认为使用生成器reduce()不会有任何区别,因为它仍然会遍历list。
reduce()
ps .:方程式tovalue只是一个例子。当然我们要获得满足任何条件的元素。
next((x for x in test_list if x.value == value), None)
这将从列表中获取与条件匹配的第一项,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给。x``break
x``break