python - 给定一个数字列表,找出加到 100 的特定长度的所有排列
问题描述
给定一个数字列表list = [0,1,2,10,21,25,30,33,34,35]
,我想在 python 上找到总和为 100 的这些数字的所有排列。
但是,我希望能够多次使用列表中的值,并且我希望能够选择排列的长度。
例如,如果排列的长度是 3,我会返回:[[30, 35, 35], [33, 33, 34], [33, 34, 33], [34, 33, 33], [35, 30, 35], [35, 35, 30]]
。
我已经能够为长度 3 执行此操作。但是,我找到了总和为 100 的 3 个数字的所有组合,然后对其进行过滤以删除包含原始列表之外数字的解决方案。
问题是我不能按照这种方法来处理长度为 4、5、6 的排列,因为有更多的组合。
谢谢
解决方案
我不确定我是否正确理解了您的问题,但试试这个:
from itertools import product
def special_permutation(lst, rno, suma):
results = []
for c in product(lst, repeat = rno):
if sum(c) == suma:
results.append(c)
return results
推荐阅读
- sql-server - Docker-compose覆盖不覆盖连接字符串
- javascript - 使用 node.js 运行代码会出错,但没有 node 它可以完美运行
- python - 将扁平层与输入层连接起来
- c# - EF在进行不存在的数据库事务时自动生成外键字段
- linux - 如何获得下一个工作日的号码
- kubernetes - RouteController 未能在 GKE 上创建路由
- flutter - 如何检查 TextFormField 是否聚焦
- scala - Execution of scala Code through command line using spark-submit
- c# - 如何在 ASP.NET Core 中更改元素的背景图像 url
- java - 防止 Java 应用程序执行恶意活动