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

获取双元素列表长度为48的可重复组合,使用combinations_with_replacement仅得49个如何解决

问题原因说明

你得到的49是itertools.combinations_with_replacement的正常运行结果,和你描述的「不考虑顺序的可重复组合」需求完全匹配:
对于仅有2个元素的源数组,生成长度为48的不考虑顺序的组合,本质上仅需要统计两个值的出现次数即可:0可以出现0次(全为17.1)、1次、2次……最多48次(全为0),总共49种可能,所以返回结果长度为49是正确的。

符合更大数量预期的解决方案

如果你预期得到更多的结果,说明你实际需要的是考虑顺序的可重复排列,即每个位置独立选择两个值中的一个,顺序不同就算不同的结果。这种场景请使用itertools.product函数,它会返回多个可迭代对象的笛卡尔积,刚好匹配该需求。

示例代码如下:

from itertools import product
array = [0, 17.1]
# repeat参数指定生成序列的长度
result = product(array, repeat=48)
print(len(list(result)))
# 输出结果为281474976710656,即2的48次方

选型总结

  • 仅关心两个元素的出现频次、不关心摆放顺序:继续使用combinations_with_replacement,49的结果是正确的
  • 关心每个位置的取值、顺序不同视为不同结果:使用product函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:02