pythonitertools:解包列表产品的最佳方式
我有一个列表,需要迭代3次(3个嵌套循环) 我可以使用以下产品的产品来实现此目的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,
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
选项运行良好。谢谢。你能解释一下你想要的结果吗?我不清楚你想做什么。重复选项效果很好。非常感谢。