如何解决使用 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.product
。 combinations
从不关心元素的顺序,_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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。