目前我有一个功能。
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循环中有一些问题,但我无法弄明白。
答案 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)