【问题标题】:Getting all the possible combinations of values获取所有可能的值组合
【发布时间】:2021-09-27 12:35:14
【问题描述】:

我想编写一个代码来显示输出的所有可能性。下面的代码显示了没有重复变量的组合,因此对于 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')

【问题讨论】:

    标签: python function for-loop combinations itertools


    【解决方案1】:

    看起来您可能正在寻找 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')
    

    【讨论】:

    • 行得通,谢谢
    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多