给定多个可能变化长度的列表,我想迭代所有值的组合,每个列表中的一个项目。例如:
first = [1, 5, 8]
second = [0.5, 4]
然后我希望输出为:
combined = [(1, 0.5), (1, 4), (5, 0.5), (5, 4), (8, 0.5), (8, 4)]
我想迭代组合列表。我该如何完成这项工作?
答案 0 :(得分:68)
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)]
请注意itertools.product
返回一个迭代器,因此如果您只想迭代一次迭代器,则无需将其转换为列表。
例如。
for x in itertools.product([1, 5, 8], [0.5, 4]):
# do stuff
答案 1 :(得分:3)
这可以在不使用list comprehension进行任何导入的情况下实现。使用您的示例:
indx_11 = find(m(:,2) == 11);
% Find all the places where change occurs which will miss the 1st element
indxDiff = (diff(m(:,1))~=0);
% Include the 1st element
m(intersect(find([1; indxDiff]), indx_11),1);