python - 如何将函数应用于列表中的每个元素,然后制作输出列表?
问题描述
我试图通过分解一个数字并将因子添加到 中来获得素因子list1
,然后list1
使用与之前相同的方法将每个数字分解并添加到list2
,因此任何素因子的列表长度都为2
(如果数字是平方数它打印出平方根两次,但由于它不是素数,所以没关系)。
我不知道如何让它将我的 factor() 函数应用于 中的每个元素,list1
并列出我制作的所有分解因子。
import math
list1 = []
list2 = []
def factors(num1):
for x in range(1, int(math.sqrt(num1) + 1)):
if num1 % x == 0:
list2.append(int(x))
list2.append(int(num1/x))
list2.sort()
print("enter a number:")
number = int(input())
for m in range(1, int(math.sqrt(number) + 1)):
if number % m == 0:
list1.append(int(m))
list1.append(int(number/m))
list1.sort()
for y in list1:
factors(y)
print(list2)
如果输入为 20,则所需的输出
((1,1),(1,2),(1,2,2,4)(1,5),(1,2,5,10),(1,2,4,5,10,20))
解决方案
您可以像这样使用列表推导来做到这一点。我稍微修改了factors
函数以返回列表。
import math
def factors(num):
fact = []
for x in range(1, int(math.sqrt(num)+1)):
if num % x == 0:
fact.append(x)
fact.append(int(num/x))
fact.sort()
return fact
print("enter a number:")
number = int(input())
list1 = factors(number)
list2 = [factors(f) for f in list1]
20 的结果:
[[1, 1], [1, 2], [1, 2, 2, 4], [1, 5], [1, 2, 5, 10], [1, 2, 4, 5, 10, 20]]
推荐阅读
- python - 没有名为“sklearn.externals.six”的模块
- c++ - 通用“sqr”函数
- android - 具有Unique字段的RoomDatabse,当值相同时如何处理?
- ruby-on-rails - rails has_many :通过关系查询不返回任何内容,尽管记录保存在数据库中
- python - Django:如何更改嵌套序列化程序中的字段名称
- c# - 谁能帮助我统一理解我的二维运动脚本?
- ios - 如何将值传递给正在加载反应本机应用程序的 Web 视图
- shell - 如何在 ubuntu 上的 bash 中运行 stdout 的输出
- r - ggplot2 仅在显示值的地方绘制轴值
- http - 如何拆分 Vec
通过一系列字符?