创建循环列表

时间:2020-03-10 12:15:09

标签: python list for-loop

这是我的代码:

num= [2,10]

def calculo(lista):
    lista2 = []    
    for i in lista:
        for j in range(1, i + 1):
            if i % j == 0:
                lista2.append(j)
    return lista2

print(calculo(num))

产生的结果:[1, 2, 1, 2, 5, 10].但是,我需要以下结果:

[[1, 2], [1, 2, 5, 10]]

此外,我想通过列表理解来了解您的方法。

5 个答案:

答案 0 :(得分:2)

这将为每个NSMenuValidation循环添加新列表,然后将新值添加到最后一个列表

i

也为简写形式:

num= [2,10]

def calculo(lista):
    lista2 = []    
    for i in lista:
        lista2.append([])
        for j in range(1, i + 1):
            if i % j == 0:
                lista2[-1].append(j)
    return lista2

print(calculo(num))

答案 1 :(得分:1)

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

outer_list = []
for i in lista:
    inner_list = []
    for j in range(...):
        if ...:
            inner_list.append(...)
    outer_list.append(inner_list)
return outer_list

答案 2 :(得分:1)

如果您想使用列表理解

IndexError: list index out of range

答案 3 :(得分:0)

num = [2,10]

def calculo(lista):
    result = [[j for j in range(1, i + 1) if i % j == 0] for i in lista]
    return result

print(calculo(num))

输出:

[[1, 2], [1, 2, 5, 10]]

答案 4 :(得分:0)

您需要在嵌套循环之前创建嵌套列表,就像在外部循环之前创建外部列表一样:

num = [2,10]

def calculo(lista):
    lista2 = []    
    for i in lista:
        lista3 = []
        for j in range(1, i + 1):
            if i % j == 0:
                lista3.append(j)
        if lista3:
            lista2.append(lista3)
    return lista2

print(calculo(num))

每当您有一个足够简单的将项目追加到列表的循环时,就可以将其变成列表理解。例如,内部循环变为:

lista3 = [j for j in range(1, i + 1) if i % j == 0]

现在您可以将整个函数编写为:

def calculo(lista):
    return [[j for j in range(1, i + 1) if i % j == 0] for i in lista]