为循环创建列表的列表

2024-10-06 12:30:51 发布

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

这是我的代码:

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

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


Tags: 方法代码in列表forreturnifdef
3条回答

如果你想使用列表理解

[[x for x in range(1, n+1) if n%x==0] for n in num]

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

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

这将foreachi循环追加新列表,然后将新值追加到最后一个列表

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

简而言之:

num= [2,10]

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

print(calculo(num))

相关问题 更多 >