使用 itertools 在 python 中的组合没有给出正确的组合

问题描述

所以我想要组合从 1 到 5 的所有数字,长度为 2。 我正在使用下面的代码来完成它。

from itertools import combinations_with_replacement
 
# Get all combinations of [1,2,3] and length 2
comb = combinations_with_replacement([1,3,4],2)
 
# Print the obtained combinations
for i in list(comb):
    print (i)

我得到的结果是:

(1,1)
(1,2)
(1,3)
(1,4)
(2,2)
(2,3)
(2,4)
(3,3)
(3,4)
(4,4)

但它跳过了一些数字,如 (2,1)、(3,2)

谁能告诉我如何获得所有组合,包括 (1,2),(2,1) 通常代码会跳过。

谢谢


您有 8 个对象:A、B、C、D、E、F、G、H 他们所有的排列重复,样本大小为 2 个对象: AA AB BA AC CA AD DA AE EA AF FA AG GA AH HA BB BC CB BD DB BE EB BF FB BG GB BH HB CC CD DC CE EC CF FC CG GC CH HC DD DE ED DF FD DG GD DH HD EE EF FE EG GE EH HE FF FG GF FH HF GG GH HG HH

解决方法

你想要itertools.productcombinations 从不关心元素的顺序,_with_replacement 只允许重复:

from itertools import product
 
comb = product([1,2,3,4],repeat=2)
for i in comb:  # no list conversion needed
    print(i)

(1,1)
(1,2)
(1,3)
(1,4)
(2,1)
(2,2)
(2,3)
(2,4)
(3,1)
(3,2)
(3,3)
(3,4)
(4,1)
(4,2)
(4,3)
(4,4)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...