为了账号安全,请及时绑定邮箱和手机立即绑定

所有可能的组合与可能的最大集合,但受值限制

所有可能的组合与可能的最大集合,但受值限制

白猪掌柜的 2021-12-09 10:39:44
在 Python 中,如果给定的集合大小大于可能组合的大小,则 itertools.combination 模块返回空>>> list(itertools.combinations([1,2,3], 4))[]有没有办法给出限制大小并让函数返回它可以创建的最大集合?像这样的东西:>>> list(itertools.combinations([1,2,3], 4))[(1, 2, 3)]我是否必须验证集合中的项目数量是否小于所需大小?if len([1,2,3]) < 4:    list(itertools.combinations([1,2,3], len([1,2,3])))else:    list(itertools.combinations([1,2,3], 4))
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

怎么样:

list(itertools.combinations([1,2,3], min(4, len([1,2,3])))

事实上,你可以编写一个函数来包装它:

def combinations(items, howmany):
    return list(itertools.combinations(items, min(howmany, len(items)))


查看完整回答
反对 回复 2021-12-09
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

你也可以使用一个lambda函数(虽然我不确定它的好处在哪里超过了使用普通函数)


In [118]: import itertools as it


In [121]: max_combs = lambda items, combs: it.combinations(items, min(combs, len(items)))


In [122]: list(max_combs([1,2,3], 4))

Out[122]: [(1, 2, 3)]


查看完整回答
反对 回复 2021-12-09
  • 2 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信