3 つの静的な値を処理する最速の方法が本当に必要であり、数十ナノ秒の違いがコードで実際に問題になる場合:
if True:
print "All are digits!"
または、さらに高速:
print "All are digits!"
and
パフォーマンスが少しでも問題になる場合は、大規模および/または動的な値のセットがあり、明示的なfor
ループを作成しない限り、 でそれを行うことはできません:
value = True
for s in strings:
value = value and s.isdigit()
if not value:
break
if value:
print "All are digits!"
and
そして、がまったく役に立たないことがすぐにわかります。
for s in strings:
if not s.isdigit():
break
else:
print "All are digits!"
しかし、 を使ってより速く処理したい場合は、リスト内包表記の代わりにall
ジェネレーター式 (またはmap
/imap
呼び出し) を使用できます。これは、小さくて静的なシーケンスと同じように、大きくて動的なシーケンスを使用しても、同じように高速で読みやすいです。 :
if all((x.isdigit() for x in ('1234', '4567', '7890')):
print "All are digits!"
if all((x.isdigit() for x in strings):
print "All are digits!"
シーケンスが非常に大きく、一部の値が false である可能性がある場合、これはlist
、すべての True/False 値を構築するよりもはるかに高速です。