首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试长度不同且不重复的组合

测试长度不同且不重复的组合
EN

Stack Overflow用户
提问于 2017-08-26 19:27:50
回答 1查看 388关注 0票数 1

在python中,我通过使用多个for循环来测试具有固定长度的组合,以及不重复的组合。例如,如果我想测试长度为2并允许重复的5以下数字的每个组合,我会这样做:

代码语言:javascript
复制
list1=[1,2,3,4,5]
for a in list1:
    for b in list1:
        print(str(a)+','+str(b) )

对于固定的长度来说,这看起来很简单,但是在测试所有不同的长度时,它并不能很好地工作。当长度发生变化时,使用这种策略,我必须生成5组不同的1、2、3、4和5循环。这已经是非常冗长和丑陋的,但随着列表的大小越来越大,它会变得更糟。我正在寻找一种更雄辩和简单的方法来测试所有这些组合在python中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-26 19:31:51

您可以在循环中调用itertools.combinations

代码语言:javascript
复制
import itertools
list1 = [1, 2, 3, 4, 5]

for i in range(1, len(list1)):
     print(list(itertools.combinations(list1, i)))

[(1,), (2,), (3,), (4,), (5,)]
[(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]
[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)]
[(1, 2, 3, 4), (1, 2, 3, 5), (1, 2, 4, 5), (1, 3, 4, 5), (2, 3, 4, 5)]

如果您的list1有重复的,您可以考虑通过转换到set并重复这个过程来删除它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45898946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档