我有一个具有日期属性的 Item 对象列表。我还有一个从数据库中获取的单个日期。
我想搜索列表,找到大于我从数据库返回的日期的所有列表项。
我的 Items 对象列表中有超过一千个对象,因此我希望尽可能高效。
我认为循环遍历列表中的每个项目并检查它是否大于我从数据库返回的日期并不是最有效的方法。
class Item(object):
def __init__(self, title, link, description, date):
self.title = title
self.link = link
self.description = description
self.date = date
item_list = []
...
#assume I populate the list with a 1,000 Item objects
filtered_list = []
for it in item_list:
if date_from_db > it.date:
filtered_list.append(it)
Run Code Online (Sandbox Code Playgroud)
列表推导式是在数据库之外执行此操作的一种相当有效的方法:
[it for it in item_list if date_from_db > it.date]
Run Code Online (Sandbox Code Playgroud)
否则,您可以使用filter内置的:
filter(lambda it: it if date_from_db > it.date, item_list)
Run Code Online (Sandbox Code Playgroud)