target_listを線形に探索していく場合、以下のコードが効率がよく、柔軟で、さらに簡潔。
next(( {x} for {x} in {target_list} if {condition} ),None)
第2変数は見つからなかった場合に返ってくる値。
nextを使うことで、条件にあるもののうち、もっとも先頭にあるものをとってくることができ、効率がいい。
例
class Hoge(object):
def __init__(self,x,y):
self.x=x
self.y=y
hoge_list=[Hoge(10,20),Hoge(10,30),Hoge(5,3),...]
found=next( (hoge for hoge in hoge_list if hoge.x==10 and hoge.y==30) ,None)
参考
http://dev.ionous.net/2009/01/python-find-item-in-list.html