我是Python新手,想学习如何使用列表理解。在
我有一段代码,它打印出一个比用户输入值n
小的三元组列表:
n = int(input("Enter the value of n:"))
a = 0
b = 0
c = 0
m = 2
triples = []
while c < n:
for i in range(1, m, 1):
a = m*m - i*i
b = 2*m*i
c = m*m + i*i
if c > n:
break
triples.append((a, b, c))
m += 1
print(triples)
它有点管用,但是我想用Python中的列表理解来做同样的事情我们怎么能做到呢?在
例如,如果我输入17,输出应该是[(3,4,5), (8,6,10),(5,12,13), (15,8,17), (9,12,15)]
,但是我没有得到(9,12,15)
。在
看看official python documentation for list comprehensions它解释了它们是如何工作得很好的。在
至于你的实际问题,以下应该是一个等价的列表理解,可以打印出Pythagorean triples直到
n
:希望您清楚当前代码中的问题:)
示例用法:
^{pr2}$您可以使用
itertools
。试试这个-要了解有关
itertools
和product
的更多信息,请访问以下链接- https://docs.python.org/3/library/itertools.html#itertools.product使用
product
我们得到一个由3个元素组成的元组,我们将其解压为三个变量a、b、c,并使用理解来仅包含那些满足if条件的元组。在但是,此代码生成重复项,如(3,4,5)和(4,3,5)
要删除重复项,可以像这样轻松地修改if语句-
^{pr2}$此修改后的代码将为
n=17
-相关问题 更多 >
编程相关推荐