生成元组以在一个for循环中迭代

时间:2014-03-03 10:26:33

标签: python iterator tuples

我想通过一次生成所有迭代器将三个for循环减少为一个。基本上我有一个使用元组作为键的字典。我知道我可以做到

for aa in range(limitA):
    for bb in range(limitB):
        for cc in range(limitC):
            do_stuff(my_dict[(aa,bb,cc)])

但有没有一种方法需要更少的代码行?像

这样的东西
for aa,bb,cc in range(limitA), range(limitB), range(limitC):
    do_stuff(my_dict[(aa,bb,cc)])

这会返回错误“ValueError: need more than 2 values to unpack

如果一般无法做到这一点,limitA == limitB == limitC的特殊情况是否有解决方案?

1 个答案:

答案 0 :(得分:4)

使用itertools.product()

from itertools import product

for aa, bb, cc in product(range(limitA), range(limitB), range(limitC)):

limitA == limitB == limitC这可以简化为:

for aa, bb, cc in product(range(limitA), repeat=3):