首页 > 解决方案 > 获取所有可能的值组合

问题描述

我想编写一个代码来显示输出的所有可能性。下面的代码显示了与没有重复的变量的组合,因此对于 2 的迭代它不包括('yes', 'yes') or ('no', 'no'). 我想在预期输出中添加可重复的值。该iterator值指定有多少组合,并且它们的长度必须相同 2 或 3。我将如何做到这一点并获得 2 和 3 迭代的预期输出?

# the possible combinations
  
from itertools import permutations

def vals(iterator):
    # of length 2
    comb = permutations(['yes','no'], iterator)
    print(f"iter amount :{iterator}")
    for i in comb:
        print(i)
    
vals(2)
vals(3)

输出:

iter amount :2
('yes', 'no')
('no', 'yes')
iter amount :3

预期产出:

iter amount :2
('yes', 'yes')
('yes', 'no')
('no', 'yes')
('no', 'no')
iter amount :3
('yes', 'yes', 'yes')
('yes', 'yes', 'no')
('yes', 'no', 'no')
('no', 'no', 'no')
('no', 'no', 'yes')
('no', 'yes', 'yes')

标签: pythonfunctionfor-loopcombinationsitertools

解决方案


看起来你可能正在寻找itertools.product

>>> import itertools
>>> for x in itertools.product(('yes', 'no'), repeat=3):
...     print(x)
...
('yes', 'yes', 'yes')
('yes', 'yes', 'no')
('yes', 'no', 'yes')
('yes', 'no', 'no')
('no', 'yes', 'yes')
('no', 'yes', 'no')
('no', 'no', 'yes')
('no', 'no', 'no')

推荐阅读