使用循环在列表中创建一个列表

2024-03-28 06:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试创建一个返回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)

Tags: 函数代码in元素列表for顺序def
2条回答

Method 1: based on the logic of your code

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]]

Method 2: a mix of for loop and list comprehensions

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]]

Method 3: using list comprehensions

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]]

您需要为第一个循环的每个迭代创建一个新列表:

def factorial_list(n):
    list2=[]
    for i in range(1,n+1):
        list3 = []  # < - Create a new list for each iteration

        for j in range(1,i+1):
            list3.append(j)
        list2.append(list3)

    print(list2)

factorial_list(4)

# Output: [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4]]

相关问题 更多 >