给定多个可能变化长度的列表,我想迭代所有值的组合,每个列表中的一个项目.例如:
first = [1, 5, 8]
second = [0.5, 4]
Run Code Online (Sandbox Code Playgroud)
然后我希望输出为:
combined = [(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Run Code Online (Sandbox Code Playgroud)
我想迭代组合列表.我怎么做到这一点?
Vol*_*ity 75
itertools.product 应该做的伎俩.
>>> list(itertools.product([1, 5, 8], [0.5, 4]))
[(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Run Code Online (Sandbox Code Playgroud)
请注意,它itertools.product返回一个迭代器,因此如果您只想迭代一次迭代器,则无需将其转换为列表.
例如.
for x in itertools.product([1, 5, 8], [0.5, 4]):
# do stuff
Run Code Online (Sandbox Code Playgroud)
使用列表推导无需导入即可实现。使用您的示例:
first = [1, 5, 8]
second = [0.5, 4]
combined = [(f,s) for f in first for s in second]
print(combined)
# [(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
Run Code Online (Sandbox Code Playgroud)