List Comprehension Hackerrank - 你能告诉我这个衬垫是否可以使用吗?

List Comprehension Hackerrank - can you tell me if this one liner is permittable to use?

我目前正在尝试解决这个挑战 - List Comprehensions - 并在 python3:

中提出了这个解决方案
if __name__ == '__main__':
    x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())

list = []
for a in range(0, x+1):
    for b in range(0, y+1):
        for c in range(0, z+1):
            if a + b + c != n:
                list.append([a, b, c])
print(list)

但困扰我的是我在 discussion:

中找到的一个衬里解决方案
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 ])

我是一个完全的初学者,不知道这个衬垫是否可以使用,如果可以的话,你能解释一下这个衬垫是如何工作的吗?你能分享我可以开始学习如何使用这样一个班轮代码的任何来源吗?

list是python中的内置数据类型,所以你不应该使用list作为标识符(变量名)。

而你的代码本身就是一行代码的解释。

诀窍是,您从要执行的 expression 开始,然后编写最外层的 for 循环,转到内部循环,最后添加要检查的条件.另外,请记住使用正确的数据结构符号来拥抱整个事物。

例如:如果我想列出所有能被 3 整除的 100 以内的偶数,我会这样做:

numbers = [i for i in range(0, 100, 2) if i % 3 == 0]
print(numbers)

输出:

[0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96]