0

次のようなテストを有効にする最もエレガントでpythonicな方法は何ですか:

def is_even(n):
  return n % 2 == 0

次のような論理的に同等の (ただし構文的には異なる) テストに変換します。

if n in even_numbers:
  # assert is_even(n)
  # ...

object を作成する方法はいくつか考えられますが、even_numbers見落としているかもしれない良い方法があれば聞いてみたいと思います。


注:これはおそらく XY 問題のように聞こえるので、私の使用例はchoiceskwarg toに関するものargparse.ArgumentParser.add_argumentであり、それを使用する方が良いか、代わりに呼び出し可能なtypekwarg をマンジするかです。

4

1 に答える 1

1

私はeven_numbersコンテナタイプに変わります:

class EvenNumbers(object):

    # Add other container methods as needed

    def __contains__(self, value):
        return value % 2 == 0

even_numbers = EvenNumbers()

それで、

>>> 3 in even_numbers
False
>>> 4 in even_numbers
True
于 2012-12-11T06:02:00.210 に答える