You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何生成允许元素重复的指定长度所有值组合?

问题原因

你使用的itertools.permutations用于生成无重复元素的排列,天然存在两个限制:

  • 单个元素在每个排列结果中只能出现一次,因此不会输出('yes', 'yes')、('no', 'no')这类包含重复值的结果
  • 当指定的排列长度大于输入序列的元素总数时,不会返回任何结果,你的输入序列只有['yes','no']2个元素,因此调用vals(3)时输出为空

解决方案

将permutations替换为itertools.product即可,该函数生成笛卡尔积,支持重复选取元素,完全匹配你需要的允许值重复、指定长度的有序组合需求。修改后的代码如下:

# 生成所有可能的组合
from itertools import product

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

运行后会输出所有符合规则的组合,和你给出的预期输出逻辑一致。

内容的提问来源于stack exchange,提问作者georgehere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:45:05