Python itertools:解包列表产品的最佳方式
Python itertools: Best way to unpack product of product of list of lists
我有一个列表列表,我需要对其迭代 3 次(3 个嵌套循环)
rangeList = [[-0.18,0.18],[0.14,0.52],[0.48,0.85]]
我可以使用 product 的 product 实现这个
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
但只是为了演示如何对您尝试的 "deep" 元组进行解包:
for (xrange, yrange), zrange in product(product(rangeList,rangeList),rangeList):
print xrange, yrange, zrange
我有一个列表列表,我需要对其迭代 3 次(3 个嵌套循环)
rangeList = [[-0.18,0.18],[0.14,0.52],[0.48,0.85]]
我可以使用 product 的 product 实现这个
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
但只是为了演示如何对您尝试的 "deep" 元组进行解包:
for (xrange, yrange), zrange in product(product(rangeList,rangeList),rangeList):
print xrange, yrange, zrange