列表理解和循环

时间:2018-08-08 00:45:10

标签: python python-3.x list loops nested

我目前在Hackerrank上经历了不同的Python3挑战,我遇到了一个使我措手不及的问题。我找到了解决方案,但我无法确定如何解决问题。我熟悉python中的循环,但似乎无法逐步跟踪代码。

问题

为您提供了三个整数 X,Y和Z ,它们表示长方体的尺寸以及整数 N 。您必须在3D网格上打印出的所有可能坐标的列表,其中的总和不等于 N

输入格式

四个整数X,Y,Z和N分别位于四行中。

约束

以字典顺序升序打印列表。

样本输入

1
1
1
2

样本输出

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]

解决方案

x, y, z, n = (int(input()) for _ in range(4))
print([[a, b, c] for a in range(x+1) for b in range(y+1) for c in range(z+1) if a + b + c != n])

1 个答案:

答案 0 :(得分:1)

让我们考虑一下列表理解的工作原理。

您发布的列表理解类似于以下循环:

f

因此,我们遍历 a b c 的所有可能值,并找到满足我们条件的三元组。 / p>