使用Python列表计算勾股长度?
我正试图将下面的Haskell代码移植到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) ...
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
应该是三个中最大的一个,因此您最好选择ia、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)]