機能があります。matchCondition(a)
、整数を取り、TrueまたはFalseを返します。
私は10個の整数のリストを持っています。matchCondition
Trueを返したリストの最初のアイテムを(元のリストと同じ順序で)返したい。
可能な限りpythonically。
機能があります。matchCondition(a)
、整数を取り、TrueまたはFalseを返します。
私は10個の整数のリストを持っています。matchCondition
Trueを返したリストの最初のアイテムを(元のリストと同じ順序で)返したい。
可能な限りpythonically。
next(x for x in lst if matchCondition(x))
動作するはずStopIteration
ですが、リスト内のどの要素も一致しない場合は発生します。に2番目の引数を指定することで、これを抑制することができますnext
。
next((x for x in lst if matchCondition(x)), None)
一致するものがない場合に返されNone
ます。
デモ:
>>> next(x for x in range(10) if x == 7) #This is a silly way to write 7 ...
7
>>> next(x for x in range(10) if x == 11)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> next((x for x in range(10) if x == 7), None)
7
>>> print next((x for x in range(10) if x == 11), None)
None
最後に、完全を期すために、リスト内で一致するすべてfilter
のアイテムが必要な場合は、組み込み関数の目的は次のとおりです。
all_matching = filter(matchCondition,lst)
python2.xでは、これはリストを返しますが、python3.xでは、反復可能なオブジェクトを返します。
break
次のステートメントを使用します。
for x in lis:
if matchCondition(x):
print x
break #condition met now break out of the loop
これx
で、必要なアイテムが含まれます。
証拠:
>>> for x in xrange(10):
....: if x==5:
....: break
....:
>>> x
>>> 5