Pythonのany
関数は、リストやタプルなどのイテラブルなオブジェクトの要素が一つでも真であればTrue
を返します。これは、特定の条件に一致する要素が存在するかどうかを確認する際に非常に便利です。
例えば、ユーザーから入力された月の名前が、既知の月のリストに存在するかどうかを確認する場合、any
関数を使用することができます。
months_list = ["January", "February", "March", "April", "May", "June", "July"]
answer = input("Month? \n")
while any(item.lower() != answer.lower() for item in months_list):
print("Sorry, didn't recognize your answer, try again")
answer = input("Type in Month\n")
このコードでは、any
関数がTrue
を返す限り、ユーザーに再度月の名前を入力するように求めます。any
関数がFalse
を返すと、つまりユーザーが正しい月の名前を入力すると、ループが終了します。
しかし、このコードには一つ問題があります。それは、any
関数がTrue
を返す条件が「リストの全ての要素がユーザーの入力と一致しない」ことであるため、ユーザーが正しい月の名前を入力してもループが終了しないという点です。
この問題を解決するためには、any
関数の条件を「リストのいずれかの要素がユーザーの入力と一致する」に変更する必要があります。
months_list = ["January", "February", "March", "April", "May", "June", "July"]
while True:
answer = input("Month? ")
if any(item.lower() == answer.lower() for item in months_list):
break
print("Sorry, didn't recognize your answer, try again")
この修正により、ユーザーが正しい月の名前を入力すると、any
関数がTrue
を返し、ループが終了します。
以上がPythonのany
関数とマッチングの基本的な使い方です。この機能を理解し、適切に活用することで、より効率的なコードを書くことができます。次回は、any
関数を使ったさらに高度なテクニックについて解説します。お楽しみに!