带重复的排列

4 投票
2 回答
6955 浏览
提问于 2025-04-17 01:40

给定一个包含两个元素的列表,比如说 l = [1,0],我需要生成所有可能的5个元素的组合,并且可以重复使用这些元素。我试过用 itertools.combinations,但没有得到我想要的结果。

在这里,给定 n = 2k = 5,我应该得到 2^5 = 32 个元素,结果应该像这样:

results = [11111,11110,11101,11100,11001,11011,11010,...00000]

2 个回答

1

这就相当于从0数到k的n次方减1,然后把当前的数字用n进制表示出来。这样一来,你的问题就变成了进制转换(这其实和长除法是差不多的)。

11

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这时候,我们可以去一些技术论坛,比如StackOverflow,寻求帮助。在这些论坛上,很多人会分享他们的经验和解决方案,帮助其他人解决类似的问题。

比如,有人可能会问:“我的代码为什么不工作?” 然后其他人就会根据他们的经验,给出一些建议,比如检查代码中的拼写错误、确保使用了正确的语法,或者查看是否有遗漏的部分。

总之,技术论坛是一个很好的地方,可以让我们学习到很多实用的知识,帮助我们在编程的路上少走弯路。

>>> import itertools
>>> ["".join(item) for item in itertools.product("10", repeat=5)]
['11111', '11110', '11101', '11100', '11011', '11010', '11001', '11000', '10111', 
'10110', '10101', '10100', '10011', '10010', '10001', '10000', '01111', '01110', 
'01101', '01100', '01011', '01010', '01001', '01000', '00111', '00110', '00101', 
'00100', '00011', '00010', '00001', '00000']

撰写回答