pythonàlaHaskell中右三角形的列表理解是什么?

时间:2014-08-26 01:01:54

标签: python list haskell geometry list-comprehension

在Haskell:

ghci> let rightTriangles' = [ (a,b,c) | c <- [1..10], a <- [1..c], b <- [1..a],
a^2 + b^2 == c^2, a+b+c == 24]

ghci> rightTriangles'
[(6,8,10)]

Python中有这么优雅的列表解析解决方案吗?

2 个答案:

答案 0 :(得分:4)

非常简单的句法交换:

>>> [ (a,b,c) for c in range(1,11)
... for b in range(1,c+1)
... for a in range(1,b+1)
... if a**2 + b**2 == c**2 ]
[(3, 4, 5), (6, 8, 10)]

我跳过了你的a+b+c == 24支票,但如果这是你真正需要的话,你可以添加它。

答案 1 :(得分:4)

有直接翻译。

[(a, b, c)
 for c in range(1, 11)
 for a in range(1, c + 1)
 for b in range(1, a + 1)
 if a**2 + b**2 == c**2 and a + b + c == 24]