首页 > 解决方案 > 使用循环在列表中创建列表

问题描述

我正在尝试创建一个返回 n 元素列表的函数,如下所示:

factorial_list(4) → [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4]]

我的输出是[[1], [1], [2], [1], [2], [3], [1], [2], [3], [4]]
如您所见,我正在努力确定内部列表的顺序。对我应该在代码中更改什么有任何见解吗?

def factorial_list(n):
    list2=[]
    for i in range(1,n+1):
        for j in range(1,i+1):
            list2.append([j])
    print(list2)

factorial_list(4)

标签: pythonlist

解决方案


方法一:根据你的代码逻辑

def factorial_list(n):
    final_list = []
    for i in range(1, n+1):
        temp = []
        for j in range(1, i+1):
            temp.append(j)
        final_list.append(temp)
    print(final_list)

factorial_list(4)   # [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4]]

方法 2:for 循环列表推导的混合

def factorial_list(n):
    final_list = []
    for i in range(1, n+1):
        temp = [j for j in range(1, i+1)]
        final_list.append(temp)
    print(final_list)

factorial_list(4)  # [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4]]

方法 3:使用列表推导

def factorial_list(n):
    final_list = [[j for j in range(1, i+1)] for i in range(1, n+1)]
    print(final_list)

factorial_list(4)   # [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4]]

推荐阅读