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

标签 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:需要超过 2 个值才能解压

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

最佳答案

使用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):

关于python - 生成元组以在一个 for 循环中迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144214/

相关文章:

c# - C# 中的 foreach 和带有 List<T> 的传统 for 循环

python - 转换元组列表的大多数 pythonic 方法

mongodb 元组比较(有序)

Python-numpy : 'dimension dependent indexing'

python - 多个json字典python

java - 当我事先检查是否存在元素时,为什么会引发 NoSuchElement 异常?

python - 将元组附加到列表

python - Django:收到错误消息 "needs to have a value for field "id“在可以使用此多对多关系之前”

python - 分隔 csv 并去除空格以生成新的 csv

c++ - std::copy raw data to cout in hex format using ostream_iterator<uint8_t> 打印出未格式化的数据。为什么?