这是我的代码:
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]]
此外,我想通过列表理解来了解您的方法。
答案 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]