【发布时间】:2016-06-08 19:27:52
【问题描述】:
我有一个列表列表,我需要对其进行 3 次迭代(3 个嵌套循环)
rangeList = [[-0.18,0.18],[0.14,0.52],[0.48,0.85]]
我可以使用以下产品的产品来实现这一点
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]等。
【问题讨论】:
-
查看
repeat参数到itertools.product。你想要product(rangeList, repeat=3)。虽然product(rangeList, rangeList, rangeList)也可以。 -
val不是迭代器,但product的结果是。顺便问一下,您希望您的xRange、yRange和zRange是什么样的?它们应该包含哪些值? -
您可能希望
product(*rangeList)获得所需的结果,但除非您显示xRange/yRange/zRange的所需输出/值,否则我不知道 -
@MarkDickinson
repeat选项效果很好。谢谢。 -
你能解释一下你想要的结果吗?我不清楚你想做什么。
标签: python itertools flatten iterable-unpacking