【问题标题】:Python Itertools Combinatinos retrieving empty listPython Itertools Combinatinos 检索空列表
【发布时间】:2019-07-26 11:15:28
【问题描述】:

我正在尝试为 14 个不同的地方生成一个包含 [0 , 1] 组合的列表或数据框。不过

我收到一个空列表或以下消息:

[itertools.combinations at 0x29b294cc0e8]

对于我尝试过的问题,实际上有一些解决方案,但似乎都没有。

d = [0, 1]

result = itertools.combinations(d, 14)
for each in result:
    print(each)

results = [x for x in itertools.combinations(d, 14)]

根据我的计算,我应该得到一个包含 2^14 个 0 和 1 组合 (16384) 的列表。

【问题讨论】:

标签: python combinations itertools


【解决方案1】:

需要的代码是:

import itertools
d = [0, 1]
lst = list(itertools.product(d, repeat=14))

【讨论】:

    【解决方案2】:

    itertools.combinations (iterable, [r]) - 来自iterable 的长度r 的组合没有重复 元素。 但是您只有 2 个元素,并且您想要一个包含 14 个元素的序列。 也许值得使用itertools.combinations_with_replacement

    【讨论】:

    • 不完全是这样,请参阅上面 Santosh 的回答
    【解决方案3】:

    请尝试combinations_with_replacement,因为 0、1 是可重复的。

    import itertools as it
    results = list(it.combinations_with_replacement([0,1], 14))
    

    结果:

    [(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
     (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
     (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1),
     (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1),
     (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1),
     (0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1),
     (0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1),
     (0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1),
     (0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1),
     (0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1),
     (0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
     (0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
     (0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
     (0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
     (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)]
    

    【讨论】:

    • 不完全是这样,请参阅上面 Santosh 的回答
    • 知道了。如果要求是 2^14 的笛卡尔积而不是组合,是的,使用 itertools.product() 提到的会生成 16384 个元素。
    • 是的,很抱歉我最初的表述不正确。就是这样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多