2014-10-17 97 views
-2

所以我只编写了几个星期,今天我正忙着在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 

[] 

这是为什么?提前谢谢了。

+0

这是一个函数吗?以及你在哪里和如何打电话给你的名单? – Kasramvd 2014-10-17 18:59:40

+1

'如果我想保留这个列表并做一些事情,它只是返回一个空的列表:' - 你能解释一下吗? – thefourtheye 2014-10-17 19:03:37

+0

这似乎是一个巧合,'list'是在函数'wth'之外定义的,它的值是一个空列表。 – chepner 2014-10-17 19:04:21

回答

3

如果你想用一个函数的结果,你需要将其分配给一个变量,像这样

new_list = wth(a, b) 
print new_list 

,而不是所有这些代码,你可以简单地使用,range功能千方百计想让你想要,像这样

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

@Robᵩ我想我现在理解他的问题。请检查更新后的答案 – thefourtheye 2014-10-17 19:08:26

1

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

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

它通常不明智地使用内置类型或函数作为变量名称(列表,字典,地图等),因为您掩盖了以后可能要使用的对象,并且通常会混淆每个人。