Cai*_*inG 0 python list-comprehension
我试图将以下Haskell代码移植到Python中,我正在接受"无效语法"响应.
let rightTriangles' = [ (a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, a+b+c == 24]
Run Code Online (Sandbox Code Playgroud)
我的失败尝试如下:
[(i,j,k) for i in range(1,11) for j in range(1,i+1) for k in range(1,j+1) if i**2 + j**2 == k**2 i + j + k == 24]
Run Code Online (Sandbox Code Playgroud)
Python 3.4.4
您可能正在寻找:
>>> [
... (i, j, k)
... for i in range(1, 11)
... for j in range(i, 11) # j >= i
... for k in range(j, 11) # k >= j
... if i**2 + j**2 == k**2 and i + j + k == 24
... ]
[(6, 8, 10)]
Run Code Online (Sandbox Code Playgroud)
请注意,您需要使用范围表示法中的逗号,and条件之间的逗号,并且(从第一个条件判断)k应该是三者中最大的一个,因此您宁愿选择范围i <= j <= k.
i < j < k 可以省去一些不必要的迭代,因为我们知道斜边严格地长于没有毕达哥拉斯三角形等腿的腿.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |