我必须创建一个函数,将空列表作为第一个参数,将n作为secound参数,以便:
L=[]
function(L,5)
print L
returns:
[1,2,3,4,5]
我在想:
def fillList(listToFill,n):
listToFill=range(1,n+1)
但它返回一个空列表。
答案 0 :(得分:16)
考虑使用extend
:
>>> l = [] >>> l.extend(range(1, 6)) >>> print l [1, 2, 3, 4, 5] >>> l.extend(range(1, 6)) >>> print l [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
如果你想做一个功能(做同样的事):
def fillmylist(l, n):
l.extend(range(1, n + 1))
l = []
fillmylist(l, 5)
答案 1 :(得分:4)
没有明确return
或yield
的函数会返回None
。你想要的是
def fill_list(l, n):
for i in xrange(1, n+1):
l.append(i)
return l
但这非常不合情理。您最好拨打range(1, n+1)
,同时返回[1,2,3,4,5]
的列表n=5
:
def fill_list(n):
return range(1, n+1)
答案 2 :(得分:0)
在
def fillList(listToFill,n):
listToFill=range(1,n+1)
如果不返回 new 指针,则只更改listToFill的指针;新指针在函数外不可用,你仍然有空列表的指针(在外部范围内)。
答案 3 :(得分:0)
def fillList(listToFill,n):
listToFill=range(1,n+1)
在函数范围内创建一个新列表,并在函数结束时消失。无用的。
def fillList(listToFill,n):
listToFill=range(1,n+1)
return listToFill()
你返回列表,你必须像这样使用它:
newList=fillList(oldList,1000)
def fillList(listToFill,n):
listToFill.extend(range(1,n+1))
并将其称为:
fillList(oldList,1000)
<强>结论强>:
在函数内部,如果要修改参数,可以重新分配并返回它,或者可以调用对象的方法并且不返回任何内容。 你不能只是重新分配它,就像你在函数之外并且什么都不返回一样,因为它不会在函数之外产生效果。
答案 4 :(得分:0)
还有您想做的事的简短示例:
l = []
l.extend(range(1, 5))
l.extend([0]*3)
print(l)