【问题标题】:Combination in python using itertools doesn't give correct combination在 python 中使用 itertools 的组合没有给出正确的组合
【发布时间】:2021-07-23 12:35:28
【问题描述】:

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

from itertools import combinations_with_replacement
 
# Get all combinations of [1, 2, 3] and length 2
comb = combinations_with_replacement([1, 2, 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,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.product”。
  • 是的,类似于上面的内容。与所有组合

标签: python combinations itertools


【解决方案1】:

你想要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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多