Python itertools:解压缩列表产品的最佳方式

Wan*_*ind 5 python flatten python-itertools iterable-unpacking

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

rangeList = [[-0.18,0.18],[0.14,0.52],[0.48,0.85]]
Run Code Online (Sandbox Code Playgroud)

我可以使用如下产品的产品实现这一点

from itertools import product
for val in product(product(rangeList,rangeList),rangeList):
    print val
Run Code Online (Sandbox Code Playgroud)

输出如下

(([-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])
Run Code Online (Sandbox Code Playgroud)

它是一个元组元组.我的问题是

  1. 这是一个好方法吗?
  2. 如果是这样,什么是产品的输出解压佳豪val成3个独立的变量说xRange,yRange并且 zRange,每个拥有发言权的列表值[-0.18, 0.18][0.14, 0.52]等.

shx*_*hx2 10

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

for xrange, yrange, zrange in product(rangeList, repeat=3):
    print xrange, yrange, zrange
Run Code Online (Sandbox Code Playgroud)

但只是为了演示如何进行"深度"元组拆包你正在尝试:

for (xrange, yrange), zrange in product(product(rangeList,rangeList),rangeList):
    print xrange, yrange, zrange
Run Code Online (Sandbox Code Playgroud)