因爲它沒有被提及剛剛完成。 好ol過濾器來過濾你的過濾元素。
FTW
函數式編程。
####### Set Up #######
class X:
def __init__(self, val):
self.val = val
elem = 5
my_unfiltered_list = [X(1), X(2), X(3), X(4), X(5), X(5), X(6)]
####### Set Up #######
### Filter one liner ### filter(lambda x: condition(x), some_list)
my_filter_iter = filter(lambda x: x.val == elem, my_unfiltered_list)
### Returns a flippin' iterator at least in Python 3.5 and that's what I'm on
print(next(my_filter_iter).val)
print(next(my_filter_iter).val)
print(next(my_filter_iter).val)
### [1, 2, 3, 4, 5, 5, 6] Will Return: ###
# 5
# 5
# Traceback (most recent call last):
# File "C:\Users\mousavin\workspace\Scripts\test.py", line 22, in <module>
# print(next(my_filter_iter).value)
# StopIteration
# You can do that None stuff or whatever at this point, if you don't like exceptions.
我知道,通常在Python列表內涵是首選,或者至少 我是這樣看的,但我不認爲這個問題是誠實的。當然,Python不是一種FP語言,但Map/Reduce/Filter是完全可讀的,是功能性編程中最標準的標準用例。
所以你去。瞭解你的功能性編程。
篩選條件列表
它不會得到任何比這更簡單:
next(filter(lambda x: x.val == value, my_unfiltered_list)) # Optionally: next(..., None) or some other default value to prevent Exceptions
下面是這個問題的一個很好的討論:http://tomayko.com/writings/cleanest-python-find -in-list-function –
原文是__ridiculously__過期,但第二個回覆完全匹配我的單行版本。雖然我不確定它比基本循環版本更好。 – agf