如何填写清单

时间:2011-12-08 10:51:55

标签: python list fill

我必须创建一个函数,将空列表作为第一个参数,将n作为secound参数,以便:

L=[]
function(L,5)
print L
returns:
[1,2,3,4,5]

我在想:

def fillList(listToFill,n):
    listToFill=range(1,n+1)

但它返回一个空列表。

5 个答案:

答案 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)

没有明确returnyield的函数会返回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)