[英]Select an element that satisfies a condition
我想从(很长)列表中选择一个满足条件的特定元素。 在我的特定情况下,列表中的每个项目都是一个类,而我想要的条件是例如item.id == 1。
我开始
[item for item in collection if item.id == 1]
但我不想遍历整个列表,因为我敢肯定只有一个满足条件的元素。
另一个选择是
def check(collection):
for item in collection:
if item.id == 1:
return item
有没有更有效的方法? Python 3是否为此提供了内置功能? 另一个选择可能是预处理列表以获得字典,例如
{item.id : item for item in collection}
要获得满足条件的第一个元素,请使用忍者的答案中概述的next()
。
为了获得一个满足条件的元素并检查它是否唯一,我使用以下函数:
def single(seq):
"""Checks that the sequence has a single element and returns it."""
"""Analogous to .Net LINQ's Single()"""
if hasattr(seq,"__len__"):
assert len(seq)==1
return seq[0]
else:
i=iter(seq)
try: value=i.next()
except StopIteration: raise AssertionError()
try: i.next()
except StopIteration: return value
else: raise AssertionError()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.