1

我目前正在尝试解决这个挑战 - 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)

但令我困扰的是我在讨论中发现的一个班轮解决方案:

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 ])

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

4

1 回答 1

2

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]
于 2020-12-05T14:03:18.953 回答