たとえば、「文字列は特定の文字列で終わっているか?」を検出したい場合、通常は次のように使用します:
if needle.endswith('ly') or needle.endswith('ed') or needle.endswith('ing') or needle.endswith('ers'): print('Is valid') else: print('Invalid')
非常に醜いですね。変数針が次の特定の文字列のいずれかであるかどうかを確認すると、次のように記述されます。
if needle in ('ly', 'ed', 'ing', 'ers'): print('Is valid') else: print('Invalid')
ただし、endswith 関数では in は使えませんが、実際に確認する必要があるのは、「文字列の末尾が次の文字列のいずれかであるか」ということです。Python には内部関数があることがわかります。任意なので、コードは次のように変更できます:
if any([needle.endswith(e) for e in ('ly', 'ed', 'ing', 'ers')]): print('Is valid') else: print('Invalid')
多くの読者がここでの私のアプローチに同意しないと思います。あるいは、もっと良い書き方があるかもしれませんが、それはもはや重要ではありません。私は、皆さんのほとんどがこの同様の問題に直面するために同じような書き方をするだろうと理解しています。 real この目的は、実際には Python の優雅さを示すことです。