在函数内创建列表

时间:2018-05-22 12:17:48

标签: python python-3.x list function

我正在尝试在函数内创建一个列表,进行一些处理并返回该列表。代码如下:

def fibo(num):
    fib = [1,2]
    i =2
    while fib[-1] <int(num):
        fib = fib[i-1]+fib[i-2]
        i+=1
    return fib

在调用该函数时,我得到并且错误地说

while fib[-1] <int(num):
TypeError: 'int' object is not subscriptable

为什么会引起这个问题?我不能在Python中的函数中创建列表吗?

编辑:我看到很多关于我的问题的投票。有人可以指导我为什么我的问题有这么多的downvotes。这将有助于我提出正确的问题并帮助社区:)

3 个答案:

答案 0 :(得分:2)

fib = fib[i-1]+fib[i-2]替换为fib.append(fib[-1] + fib[-2]),您的代码将是正确的。

正如他们在评论中提到的那样,您的行fib = fib[i-1]+fib[i-2]正在将列表fib转换为int,您希望将其附加到列表中以使代码正常工作。

答案 1 :(得分:1)

你很可能想要像

这样的东西
fib.append(fib[-1]+fib[-2])

而不是

fib = fib[i-1]+fib[i-2]

答案 2 :(得分:1)

def fibo(num):
    i =2
    fib = [1, 2]

    while fib[-1] < int(num):
        fib.append(fib[i-1]+fib[i-2])
        #fib = fib[i-1] + fib[i-2]
        i+= 1
    return fib

result=fibo(9)
print(result)

我认为覆盖列表时会发生错误。