使用Python列表计算勾股长度?

使用Python列表计算勾股长度?,python,list-comprehension,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] Python 3.4.4您可能正在寻找: >>> [ ... (i, j, k) ... for i in range(1, 11) ...

我正试图将下面的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]

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

请注意,在范围表示法中需要一个逗号,在条件之间需要一个
,并且(从第一个条件判断)
k
应该是三个中最大的一个,因此您最好选择
i
a、b和c
应该是什么?
i,可能是j和k?在实际编写python之前,您必须对如何编写python有一些基本的想法。。。例如,这不是调用
range
的方式。在理解的最后,在
k**2 i
之间缺少了一些东西。我认为最后一个约束(24)并不意味着什么,所以我关闭了它。如果不是这样的话,请随意重新打开。你的答案的忠实粉丝。让他们来。@cᴏʟᴅsᴘᴇᴇᴅ 荣幸!!:)还是sarkasm?>:(不,不是:-)@cᴏʟᴅsᴘᴇᴇᴅ :D THX,也用于编辑。让它更具可读性。隐马尔可夫模型。。。我回答这个问题太早了一分钟,但是。。。
>>> [
...    (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)]