pythonitertools:解包列表产品的最佳方式

pythonitertools:解包列表产品的最佳方式,python,itertools,flatten,iterable-unpacking,Python,Itertools,Flatten,Iterable Unpacking,我有一个列表,需要迭代3次(3个嵌套循环) 我可以使用以下产品的产品来实现此目的 from itertools import product for val in product(product(rangeList,rangeList),rangeList): print val (([-0.18, 0.18], [-0.18, 0.18]), [-0.18, 0.18]) (([-0.18, 0.18], [-0.18, 0.18]), [0.14, 0.52]) (([-0.18,

我有一个列表,需要迭代3次(3个嵌套循环)

我可以使用以下产品的产品来实现此目的

from itertools import product
for val in product(product(rangeList,rangeList),rangeList):
    print val
(([-0.18, 0.18], [-0.18, 0.18]), [-0.18, 0.18])
(([-0.18, 0.18], [-0.18, 0.18]), [0.14, 0.52])
(([-0.18, 0.18], [-0.18, 0.18]), [0.48, 0.85])
(([-0.18, 0.18], [0.14, 0.52]), [-0.18, 0.18])
输出如下所示

from itertools import product
for val in product(product(rangeList,rangeList),rangeList):
    print val
(([-0.18, 0.18], [-0.18, 0.18]), [-0.18, 0.18])
(([-0.18, 0.18], [-0.18, 0.18]), [0.14, 0.52])
(([-0.18, 0.18], [-0.18, 0.18]), [0.48, 0.85])
(([-0.18, 0.18], [0.14, 0.52]), [-0.18, 0.18])
这是一个元组的元组。我的问题是

  • 这是一个好方法吗
  • 如果是这样,打开包装的最佳方式是什么 将产品的
    val
    输出为3个独立变量,如
    xRange
    yRange
    zRange
    ,其中每个都保存一个列表值,例如
    [-0.18,0.18]
    [0.14,0.52]

  • 这可能是做你想做的事情最优雅的方式:

    for xrange, yrange, zrange in product(rangeList, repeat=3):
        print xrange, yrange, zrange
    
    但为了演示如何进行您尝试的“深层”元组解包:

    for (xrange, yrange), zrange in product(product(rangeList,rangeList),rangeList):
        print xrange, yrange, zrange
    

    查看
    itertools.product
    repeat
    参数。您需要
    产品(范围列表,重复=3)
    。虽然
    product(rangeList,rangeList,rangeList)
    也可以工作。
    val
    不是迭代器,但
    product
    的结果是。顺便问一下,您希望您的
    xRange
    yRange
    zRange
    看起来像什么?它们应该包含哪些值?您可能希望
    product(*rangeList)
    获得所需的结果,但除非您显示
    xRange
    /
    yRange
    /
    zRange
    @MarkDickinson的所需输出/值,
    repeat
    选项运行良好。谢谢。你能解释一下你想要的结果吗?我不清楚你想做什么。重复选项效果很好。非常感谢。