python 放入列表

python put into list

def problem(n):
    myList = []
    for i in range(2, n):
        if n % i == 0:
            myList.append(i)

    return myList

使用这段代码,我想知道如何将例如 12 的因数打印为 [[6,2],[3,4]] 这样的东西不必按相同的顺序排列,谢谢。

这应该适合你:

import math

def problem(n):
    myList = []
    for i in range(2, int(math.sqrt(n) + 1)):
        if n % i == 0:
            myList.append([i, int(n/i)])

    return myList

要得到因子对,将 n 除以 i,如果 i 是一个因子,它将除以 i 的对。

示例:

print(problem(12)) #output: [[2, 6], [3, 4]]

你几乎是正确的。使用 range 你没有得到这个数字。只需添加 n+1 而不是 n。那应该有效。此外,您不会在列表中删除除法器。我也加了。

def problem(n):
    myList = []
    for i in range(2, n+1):
        if n % i == 0 and [int(n/i),i] not in myList:
            myList.append([i,int(n/i)])

    return myList

另一种方式。使用 range 循环并检查是否 is_integer

num = 12
set([tuple(sorted(j)) for j in [[i, int(num/i)] for i in range(2,num) if (num/i).is_integer()]]
)
#Output:
#{(2, 6), (3, 4)}

为了只做一次除法:

for i in range(2, int(math.sqrt(n) + 1)):
    d, m = divmod(n, i)
    if m == 0:
        myList.append([i, d])

你不会得到有上限的重复项sqrt(n)