执行该函数后,为什么这个列表没有“保存”?

时间:2014-10-17 18:58:12

标签: python list

所以我只编写了几个星期,今天我在编写一个填充空列表的python中的算法。我写了这个:

def wth (a,b):

    list=[]
    i = 0
    j = b
    while len(list)<a:
        list.insert(i,j)
        i=i+1
        j=j+1
    return list

它起作用,例如:

wth(10,10)

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

但是,如果我想保留此列表并对其执行某些操作,则只返回空列表:

print list

[]

这是为什么?非常感谢提前。

2 个答案:

答案 0 :(得分:3)

如果要使用函数的结果,则需要将其分配给变量,如

new_list = wth(a, b)
print new_list

而不是所有这些代码,您只需使用range函数来实现您想要的功能,就像这样

def wth(a, b):
    return range(b, b + a)

答案 1 :(得分:1)

在您的示例中,“list”是函数范围内的变量。当函数终止时,“list”指向的对象将返回给调用者,但“list”变量本身会与本地函数上下文中的所有变量一起被销毁。

事实证明“list”是内置的名称,因此当您稍后尝试打印时,您应该获得"<type 'list'>"。从你的例子中,我假设你已经创建了一个名为“list”的全局变量。

使用内置类型或函数作为变量名(list,dict,map等)通常是不明智的,因为你屏蔽了以后可能想要使用的对象,并且通常会使每个人感到困惑。