【问题标题】:Variations with repetition重复变化
【发布时间】:2011-09-07 13:31:05
【问题描述】:

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

给定n = 2k = 5 我应该得到2^5 = 32 元素,结果应该是这样的:

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

【问题讨论】:

  • 你有什么问题?到目前为止,您只发表了声明。请更新您的问题,提供有关您已经尝试过的内容、遇到问题的地方以及继续操作需要了解的信息。
  • 这看起来像手工作品,请相应地标记它。

标签: python combinatorics variations


【解决方案1】:
>>> 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']

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 有 bin() 可以转换成二进制。
    • 是的,但他想要一个任意的基数 (n)。基数二是问题中的一个例子。无论如何 - 至少对于 python - Tim 的答案更好。
    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多