我试图根据列表中的数字是否为平方数来返回 True/False 输出。
该列表需要多次检查,并且列表可以是任何正整数,这意味着该整数可能非常大,事实上,对于使用涉及 math.sqrt() 函数的其他解决方案来说太大,这会产生所示的溢出错误这里:
userList = [1*10**1000]
print ([x for x in userList if math.sqrt(x).is_integer()])
>>>Traceback (most recent call last):
print ([x for x in userList if math.sqrt(x).is_integer()])
OverflowError: int too large to convert to float
Run Code Online (Sandbox Code Playgroud)
这是我的*方法:
def squares():
for i in userList:
if i in squares: #the list in which all the square numbers are stored
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
*我当前的想法是将平方数预先准备到一个单独的列表中,以便比较它们,但我可能正在寻找一种替代的、更快的方法,因为 userList 可能会变得非常大。
我想将返回的输出存储在单独的列表中,如下所示:
out = []
for …Run Code Online (Sandbox Code Playgroud)