扩展列表理解选项 - Python

Extended list comprehension options - Python

我将使用 Project Euler 练习中的代码示例。

[(a, b, c) for a in range(1, 334) for b in range(1, 334) for c in range(1,334) if c == 1000 - a - b and a < b  and b < c and a**2 + b**2 == c**2]

我对列表理解知之甚少,但想知道是否有一种方法可以暗示 a、b、c 是 > 0 的整数,并且您想递增它们

两个伪代码示例可能是这样的:

[(a, b, c) for a > 0 for b > a for c > b if c == 1000 - a - b]
[(a, b, c) for int(a) for int(b) for int(c) if c == 1000 - a - b]

是否可以这样做?

这里是对你的方法的简化:

[(a, b, 1000 - a - b) for a in range(1, 332) for b in range(a+1, 333)  if  a**2 + b**2 == (1000 - a - b)**2]
  • c 是固定的,它总是 1000 - a - b 所以不需要循环 它的价值。

  • 您可以将 b 的范围设为 range(a+1,333),这样您就不必 测试是否 b>a

虽然我认为它作为问题的解决方案是错误的