【问题标题】:combn function in R equivalent in Python (Generate all combination of n elements)Python中R等效项中的combn函数(生成n个元素的所有组合)
【发布时间】:2018-03-31 09:27:08
【问题描述】:

R 中的函数combn(x,m) 一次生成元素x 的所有组合。例如,

t(combn(5,2))
      [,1] [,2]
 [1,]    1    2
 [2,]    1    3
 [3,]    1    4
 [4,]    1    5
 [5,]    2    3
 [6,]    2    4
 [7,]    2    5
 [8,]    3    4
 [9,]    3    5
[10,]    4    5

如何在 python 中获得相同的结果?我知道scipy.misc.comb 只给出结果而不是列表,我还阅读了this article,它看起来不同,首先需要一个给定的列表,而不仅仅是两个整数。

【问题讨论】:

    标签: python r combinations


    【解决方案1】:
    itertools.combinations(iterable, r)
    

    这会生成一个可迭代的 r 长度元组。如果你想要它作为一个列表,那么你可以看到所有内容:

    list(itertools.combinations(range(1,6), 2))
    # [(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]
    

    【讨论】:

    • 我之前查过; itertools.combinations(5, 2); TypeError:'int' 对象不可迭代。我需要一个非常简单直接的函数。
    • @Hadj 是的,你需要一个可迭代的。这是一种不同的语言,所以会有不同的要求。传递 range(1,6),将为您提供 1 到 5 的可迭代对象
    • @Hadij,这是“简单明了的功能”,您需要将可迭代集合传递给他。您在 TypeError 中被阻止的事实是您没有充分了解它。
    • 编辑帖子后,现在可以使用了。非常感谢您。 @丹霍尔
    • @Hadj 欢迎您。我很高兴添加具体的使用示例帮助您理解。如果您觉得这回答了您的问题,请投票并选择它作为答案:stackoverflow.com/help/someone-answers
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    相关资源
    最近更新 更多