從潛在廣泛的列表中獲取滿足特定條件的第一個元素是常見的任務。雖然像您這樣的自訂函數可以實現此目的,但 Python 中可能內建了更有效的替代方案。
對於這些版本,接下來考慮內建函數產生以下兩種方法:
提高StopIteration:
next(x for x in the_iterable if x > 3)
傳回預設值(例如None):
next((x for x in the_iterable if x > 3), default_value)
注意:以下解決方案比Python 2.6 的效率低,因為它們處理效率低,因為它們處理效率低,因為它們處理效率低,因為它們處理效率低,因為它們處理的效率整個清單。
下一個方法:
.next()
如果沒有元素滿足條件,則立即引發 StopIteration .
自訂函數(根據您的初始提案):
def first(the_iterable, condition = lambda x: True): for i in the_iterable: if condition(i): return i
itertools:
from itertools import ifilter, islice first_item = next(ifilter(lambda x: x > 3, the_iterable))
帶中斷的循環:
for item in the_iterable: if condition(item): break first_item = item
嘗試/除外停止迭代:
try: first_item = next(x for x in the_iterable if condition(x)) except StopIteration: return None
以上是如何有效率地查找Python清單中的第一個匹配項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!