首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用itertools导入组合的情况下从列表中获取所有对项

如何在不使用itertools导入组合的情况下从列表中获取所有对项
EN

Stack Overflow用户
提问于 2018-12-13 08:47:07
回答 3查看 143关注 0票数 0

我有一个列表,我想要一个列表中所有可能的项目组合。

代码语言:javascript
复制
from itertools import combinations
l = [1,2,3]
for i in combinations(l,2):
    print(i) // (1, 2) (1,3) (2,3)

我想要相同的输出,但不需要使用迭代工具。我试过:

代码语言:javascript
复制
l = [1,2,3]
for i in l:
    for j in l:
        print((i,j)) // (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)

在不使用迭代工具的情况下,如何获得相同的输出?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-13 08:50:07

也许试试这个

代码语言:javascript
复制
l = [1, 2, 3]
for i in l:
    for j in l:
        if(j <= i):
            continue
        else:
            print(i, j)
票数 1
EN

Stack Overflow用户

发布于 2018-12-13 08:50:12

您可以在文档中找到itertools.combinations的示例实现:

大致相当于: def组合(可迭代,r):#组合(‘ABCD’,2) -> AB AC AD BC BD CD #组合(范围(4),( 3) -> 012 013 023 123池=元组(可迭代)n=len(池)如果r> n:返回索引=列表(范围(R)),则产生元组(用于指数中的i),而True: i在反向(范围(R)):如果指示数!= i+n- r:断开否则:+= 1表示j在范围内(i+1,r):指标j=指标j-1+1产量元组(指数中i的池i)

票数 1
EN

Stack Overflow用户

发布于 2018-12-13 10:16:12

为了提高效率,您可以在一个班轮中这样做:

代码语言:javascript
复制
l = [1, 2, 3]

([print(i, j) for i in l for j in l])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53758019

复制
相关文章

相似问题

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