如何处理数目可变的嵌套for循环?

2024-06-06 05:13:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dict,我想找出所有值和的组合,乘以一个递增因子。dict大小为2时的可能代码:

# data and n come from elsewhere
data = {'a': 1, 'b': 2}
n = 3

for x in xrange(0, n):
    for y in xrange(0, n):
        print("{0} * {1} + {2} * {3} = {4}".format(x, data['a'], y, data['b'], x * data['a'] + y * data['b']))

这给了

0 * 1 + 0 * 2 = 0
0 * 1 + 1 * 2 = 2
0 * 1 + 2 * 2 = 4
1 * 1 + 0 * 2 = 1
(...)
2 * 1 + 2 * 2 = 6

我的问题是dict中元素的数量会有所不同,因此嵌套的for的数量也应该有所变化。有没有更好的方法来编码这样一个问题,以适应这样一个变量dict?你知道吗


Tags: and代码infromformat元素fordata
1条回答
网友
1楼 · 发布于 2024-06-06 05:13:45

可以将嵌套循环替换为笛卡尔积上的单个循环

from itertools import product
for x, y in product(range(n), repeat=2):
    ...

这本身并不太有用,因为您仍然在那里硬编码2个变量。但它将我们引向下一点-itertools.product在迭代时生成元组

from itertools import product
num_loops = 5 # len(data) in your case
for item in product(range(n), repeat=num_loops):
    ... # item is a 5-tuple

相关问题 更多 >