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

在 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))


白猪掌柜的
浏览 215回答 2
2回答

有只小跳蛙

怎么样:list(itertools.combinations([1,2,3],&nbsp;min(4,&nbsp;len([1,2,3])))事实上,你可以编写一个函数来包装它:def&nbsp;combinations(items,&nbsp;howmany): &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;list(itertools.combinations(items,&nbsp;min(howmany,&nbsp;len(items)))

慕勒3428872

你也可以使用一个lambda函数(虽然我不确定它的好处在哪里超过了使用普通函数)In [118]: import itertools as itIn [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)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python