随重复而变化

发布于 2024-12-03 12:18:44 字数 281 浏览 2 评论 0原文

给定一个列表,例如两个元素 l = [1,0] 我需要创建所有可能的 5 元素重复变体。我尝试过 itertools.combinations 但给了我我想要的。

给定 n = 2k = 5 我应该得到 2^5 = 32 元素,结果应如下所示:

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

Given a list of e.g. two elements l = [1,0] I need to create all possible 5-element variations with repetitions. I've tried itertools.combinations but give me what I wanted.

With given n = 2 and k = 5 I should get 2^5 = 32 elements and the result should look like this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千秋岁 2024-12-10 12:18:44
>>> 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']
>>> 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']
挽你眉间 2024-12-10 12:18:44

这相当于循环 0..k^n-1 并输出以 n 为基数的当前索引。这将您的问题减少到基数转换(本质上相当于长除法)。

This is equivalent to looping over 0..k^n-1 and outputting the current index in base n. Which reduces your problem to base conversion (which is essentially equivalent to long division).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文