gpt4 book ai didi

python - 在 Python 中查找所有可能的参数组合

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:48 24 4
gpt4 key购买 nike

我有一个具有以下签名的函数:

def function(a=None, b=None, c=None):
# ... some more code ...

如果通过,a、b 和 c 只能是 bool 值。

我想知道 a、b 和 c 的所有有效组合。

请注意,a、b 和 c 是可选的,因此可以使用最少 0 个参数和最多 3 个参数调用此函数。

我能够得到所有可能的参数组合:

arg_names = ['a', 'b', 'c']
arg_values = [None, True, False]

arg_combinations = []
for i in range(len(arg_names)):
arg_combinations += list(
itertools.combinations(arg_names, i + 1)
)

产生:

[('a',), ('b',), ('c',), ('a', 'b'), ('a', 'c'), ('b', 'c'), ('a', 'b', 'c')]

但是我无法进一步创建参数和值的所有可能组合:

arg_value_combinations = []
for c in arg_combinations:
arg_value_combinations += list(
itertools.product(c, arg_values)
)

print arg_value_combinations

产生:

[('a', None), ('a', True), ('a', False), ('b', None), ('b', True), ('b', False), ('c', None), ('c', True), ('c', False), ('a', None), ('a', True), ('a', False), ('b', None), ('b', True), ('b', False), ('a', None), ('a', True), ('a', False), ('c', None), ('c', True), ('c', False), ('b', None), ('b', True), ('b', False), ('c', None), ('c', True), ('c', False), ('a', None), ('a', True), ('a', False), ('b', None), ('b', True), ('b', False), ('c', None), ('c', True), ('c', False)]

绝对是错误的路径。

最佳答案

如果每个值都可以包含 NoneFalseTrue,只需生成这些组合(使用 itertools.product(),并过滤掉元素选择None:

from itertools import product

for combo in product((None, True, False), repeat=3):
arguments = {k: v for k, v in zip('abc', combo) if v is not None}
print arguments

这会产生:

>>> from itertools import product
>>> for combo in product((None, True, False), repeat=3):
... arguments = {k: v for k, v in zip('abc', combo) if v is not None}
... print arguments
...
{}
{'c': True}
{'c': False}
{'b': True}
{'c': True, 'b': True}
{'c': False, 'b': True}
{'b': False}
{'c': True, 'b': False}
{'c': False, 'b': False}
{'a': True}
{'a': True, 'c': True}
{'a': True, 'c': False}
{'a': True, 'b': True}
{'a': True, 'c': True, 'b': True}
{'a': True, 'c': False, 'b': True}
{'a': True, 'b': False}
{'a': True, 'c': True, 'b': False}
{'a': True, 'c': False, 'b': False}
{'a': False}
{'a': False, 'c': True}
{'a': False, 'c': False}
{'a': False, 'b': True}
{'a': False, 'c': True, 'b': True}
{'a': False, 'c': False, 'b': True}
{'a': False, 'b': False}
{'a': False, 'c': True, 'b': False}
{'a': False, 'c': False, 'b': False}

关于python - 在 Python 中查找所有可能的参数组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com