python中优雅的多维循环

时间:2021-01-31 14:31:11

标签: python

我想计算三个整数的平方和可以表示哪些整数。在我的情况下,直到 i,j,k 都等于 4。 我用于此目的的(不雅)代码如下:

nums = []
for i in range(4):
    for j in range(4):
        for k in range(4):
            nums.append(i*i + j*j + k*k)

有没有更pythonic或更优雅的解决方案来解决这个问题? 理想情况下,对于尽可能多的变量(i、j、k、...、n),我想要。

3 个答案:

答案 0 :(得分:5)

您可以使用 itertools.product 来执行此操作:

from itertools import product

for i, j, k in product(range(4), repeat=3):
    # do something with i, j and k

如果您事先不知道需要多少个变量,则不必将 product 解包为 ijk。您可以将其保留为:

for nums in product(range(4), repeat=3):
    # do something with nums

答案 1 :(得分:2)

如果您想为更大的值执行此操作,我建议使用 itertools

import itertools

def sumsq(x):
    return sum(y * y for y in x)

max_integer = 4
num_terms = 3

num = [sumsq(x) for x in itertools.combinations_with_replacement(range(1, max_integer + 1), num_terms)]

答案 2 :(得分:0)

可以使用列表理解在一行中完成:

$result = mysqli_query($conn,"your query");
while($row = mysqli_fetch_assoc($result))
{
    echo '<tr><td>'.$row['tableColumnOne'].'</td>
            <td>'.$['tableColumnTwo'].'</td>
            <td>'.$['tableColumnThree'].'</td>
        </tr>';
}
相关问题