【问题标题】:Python itertools product of undefinite dimension不确定维度的Python itertools产品
【发布时间】:2015-10-28 11:29:37
【问题描述】:

我想生成 N 个变量的笛卡尔积,N 本身就是一个变量。让table 成为一个列表,我怎样才能得到[0, table[i] - 1] 的笛卡尔积?
如果我知道table 的长度总是3,我会写itertools.product(xrange(table[0]), xrange(table[1]), xrange(table[2]))。但是如何使用未定义的表长度来做到这一点?
感谢您的帮助。

【问题讨论】:

    标签: python itertools cartesian-product


    【解决方案1】:

    一种方法是使用列表推导:

    itertools.product(*[xrange(t) for t in table])
    

    【讨论】:

      【解决方案2】:

      您想使用 Python 的“splat”运算符func(*iterable)

      >>> import itertools
      >>> table = [1, 5, 3]
      >>> iterator = itertools.product(*map(xrange, table))
      >>> list(iterator)
      [(0, 0, 0), (0, 0, 1), (0, 0, 2),
      (0, 1, 0), (0, 1, 1), (0, 1, 2),
      (0, 2, 0), (0, 2, 1), (0, 2, 2),
      (0, 3, 0), (0, 3, 1), (0, 3, 2),
      (0, 4, 0), (0, 4, 1), (0, 4, 2)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2020-05-05
        • 2015-06-01
        相关资源
        最近更新 更多