验证数字列表是否属于斐波那契数列

时间:2018-09-19 10:48:59

标签: python list function fibonacci

我制作了一个函数,该函数将列表作为输入并也返回列表。

例如输入为[4,6,8,10,12] 并且输出应为[0,0,1,0,0]

因为8属于斐波那契数列

我的代码是

for i in input1:
    phi=0.5+0.5*math.sqrt(5.0)
    a=phi*i
    out =[ i == 0 or abs(round(a) - a) < 1.0 / i];
    return out;

4 个答案:

答案 0 :(得分:0)

我认为最好的方法可能是编写一个名为is_fibonacci的函数,该函数接受数字输入,如果输入是斐波那契数,则返回True,否则返回False。然后,您可以对初始列表input1return [1 if is_fibonacci(num) else 0 for num in input1]进行列表理解。 (当然,is_fibonacci可以自动返回10而不是布尔值,在这种情况下,列表理解甚至更简单。)

编写is_fibonacci函数是一个有趣的练习,我将留给您:)(但是,如果您为此感到苦恼,也很乐意为您提供帮助。)

答案 1 :(得分:0)

这将起作用:

input1 = [4,6,8,10,12]
out=[]
for i in input1:
    phi=0.5+0.5*math.sqrt(5.0)
    a=phi*i
    out.append(i == 0 or abs(round(a) - a) < 1.0 / i);

要将bool转换为int

import numpy
y=numpy.array(out)
new_output = y*1

答案 2 :(得分:0)

我猜这应该解决

import math


# A function that returns true if x is perfect square
def isPerfectSquare(x):
    s = int(math.sqrt(x))
    return s * s == x


# Returns true if n is a Fibinacci Number, else false

def isFibonacci(n):
    return isPerfectSquare(5 * n * n + 4) or isPerfectSquare(5 * n * n - 4)


i = [4, 6, 8, 10, 12]
print(i)
j = []
# A utility function to test above functions
for item in i:
    if (isFibonacci(item) == True):
        j.append(1)

    else:
        j.append(0)
print(j)

输出:

[4, 6, 8, 10, 12] 
[0, 0, 1, 0, 0]

答案 3 :(得分:0)

这就是你想要的

from directory_two.package_inside_directory_two import more_tests
from directory_two.package_inside_directory_two.subDirectory_inside_package_two import file_under_Subdirectory