使用for循环创建多个列表

时间:2013-11-17 00:55:42

标签: python list for-loop

目前我有一个功能。

def create1(n): 

    output = []
    for i in range(n):
        output.append(int(i)+1)
    return output

每当输入create(3)时返回[1,2,3]。但是,我希望它返回[[1],[1,2],[1,2,3]]。 我知道在我的for循环中有一些问题,但我无法弄明白。

4 个答案:

答案 0 :(得分:4)

使用range()快速创建数字列表:

def create1(n): 
    output = []
    for i in range(n):
       output.append(range(1, i + 2))
    return output

或者,使用列表理解:

def create1(n): 
    return [range(1, i + 2) for i in range(n)]

如果您使用的是Python 3,请先将range()返回的迭代器转换为列表:

for i in range(n):
   output.append(list(range(1, i + 2)))

快速演示:

>>> def create1(n): 
...     return [range(1, i + 2) for i in range(n)]
... 
>>> create1(3)
[[1], [1, 2], [1, 2, 3]]

答案 1 :(得分:3)

这适用于Python 2和Python 3:

>>> def create1(n):
...   return [list(range(1,i+1)) for i in range(1,n+1)]
...
>>> create1(5)
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]

答案 2 :(得分:0)

您真正想要的是在每个阶段附加的列表。所以试试这个

def create1(n): 
    output = []
    for i in range(n):
        output.append(range(1,i+2)) # append a list, not a number.
    return output

range(n)为您提供从0到n-1的整数列表。因此,在每个阶段(每个i),您将向输出附加一个从0到i + 1的列表。

答案 3 :(得分:0)

试试这个:

def create(n):
    output = []
    for i in range(n):
        output.append(range(1,i+2))
    return output


print create(3)