我有一个对象列表。我想在此列表中找到一个(第一个或其他)对象,该对象具有等于 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()
不会有任何区别,因为它仍然会遍历列表。
ps.: 等式 value
只是一个例子。当然,我们想得到一个满足任何条件的元素。
原文由 seler 发布,翻译遵循 CC BY-SA 4.0 许可协议
这会从列表中获取与条件匹配的第一项,如果没有项匹配,则返回
None
。这是我首选的单一表达形式。然而,
朴素的循环中断版本是完美的 Pythonic —— 它简洁、清晰且高效。要使其与单行代码的行为相匹配:
这会将
None
分配给x
如果你不break
退出循环。