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