python - Python Decompose number 函数,接收数字和分解方法
问题描述
我正在尝试创建一个函数,用给定的数字分解一个数字:
例如要分解的数是 5,分解的方法是 1,2,5
def func(Number_to_decompose,list_with posible_ways_to_decompose)
func(5,[1,2,5])
所以函数应该返回:
[[1,1,1,1,1],[2,1,1,1],[1,2,1,1],[1,1,2,1],[1,1,1,2],[5]]
考虑到列表中的数字是相加的,所以 [1+1+1+2] 是 5!
解决方案
尝试在列表理解中使用itertools.product
不同的重复,然后在列表理解之外使用进行检查:
import itertools
def func(n,l):
return [a for i in [itertools.product(l,repeat=x) for x in range(1,6)] for a in i if sum(a) == n]
print(func(5,[1,2,5]))
输出:
[(5,), (1, 2, 2), (2, 1, 2), (2, 2, 1), (1, 1, 1, 2), (1, 1, 2, 1), (1, 2, 1, 1), (2, 1, 1, 1), (1, 1, 1, 1, 1)]
如果想要列表列表:
print(list(map(list,func(5,[1,2,5]))))
输出:
[[5], [1, 2, 2], [2, 1, 2], [2, 2, 1], [1, 1, 1, 2], [1, 1, 2, 1], [1, 2, 1, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]]
推荐阅读
- python - 在 Python 上编写代码:从嘈杂的测量中恢复正弦曲线
- python - AttributeError:“NoneType”对象没有属性“网格”
- .net - 如何在 .net core 3.1 API 中获取客户端 IP
- python - 如何使用 python 从 youtube v3 api 修复 json?
- java - process.waitFor() 返回我的一台计算机但不在我的另一台计算机上
- javascript - Gatsby.js 问题,无论我尝试什么
- pytorch - 相同重构输入的骰子分数变化
- c# - 将 wpf 应用程序输出重定向到文件
- php - 读取存储在数据库中的 CSV 文件并在 Laravel 的 html 表中查看
- maven - Surefire 无法在 Surefire 报告中生成失败测试的完整堆栈跟踪