代码之家  ›  专栏  ›  技术社区  ›  Cranjis

Python遍历布尔变量的所有可能组合

  •  0
  • Cranjis  · 技术社区  · 5 年前

    所以我有:

    params["is_A"] = True/False
    params["is_B"] = True/False
    ...
    

    对于所有可能的组合,我想打电话给

    my_func(params)
    

    最好的方法是什么?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Mark Tolonen    5 年前

    itertools.product 可以生成所有组合:

    import itertools
    
    names = 'is_A is_B is_C is_D is_E is_F'.split()
    
    def my_func(params):
        print(params)
    
    for p in itertools.product([True,False],repeat=6):
        params = dict(zip(names,p))
        my_func(params)
    

    输出:

    {'is_A': True, 'is_B': True, 'is_C': True, 'is_D': True, 'is_E': True, 'is_F': True}
    {'is_A': True, 'is_B': True, 'is_C': True, 'is_D': True, 'is_E': True, 'is_F': False}
    ...
    {'is_A': False, 'is_B': False, 'is_C': False, 'is_D': False, 'is_E': False, 'is_F': True}
    {'is_A': False, 'is_B': False, 'is_C': False, 'is_D': False, 'is_E': False, 'is_F': False}