在 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)))
慕勒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)]
添加回答
举报
0/150
提交
取消