如何用itertools解决无序排列组合的问题


Posted in Python onMay 18, 2017

最近我作为Python菜鸟一枚开始征战Codewars,所以打算在这里记下遇到的有意思的题目。今天这第一题叫做“Best Travel”:

John和Mary计划去一些小镇旅行。Mary已经列好了这些小镇之间的距离比如ls=[50, 55, 57, 58, 60]。但是John不想开车太累,所以提出了两个要求:1) 开车不超过某个距离比如t=174 miles 2) 只能去3个小镇。

选择哪3个小镇可以让John和Mary都满意呢?(即找到距离之和最接近或等于t的3个小镇)

这道题目可以抽象成:

输入一个整数列表ls和整数t:

1. 找出从ls中任取三个元素的所有组合

2. 计算每个组合的三个元素之和

3. 如果存在小于或等于t的和,那么从中挑出最大的,然后输出这个最大和对应的三元素组合

4. 如果不存在,只好返回None

实现要点:

1. 无序排列组合:

用itertools模块的combinations方法

2. 求和:

用sum函数

3. 求最大值:

用max函数

4. 捕获异常:

用try-except

借用这一题的某个best solution, 实现代码为:

def choose_best_sum(t, k, ls):
  import itertools

  try:
    return max(sum(combination) for combination in itertools.combinations(ls, k) if sum(combination) <= t)
  except:
    return None

以上这篇如何用itertools解决无序排列组合的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中文字符串截取问题
Jun 15 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python入门之后再看点什么好?
Mar 05 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
python反转列表的三种方式解析
Nov 08 Python
wxPython实现画图板
Aug 27 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 #Python
Python中正则表达式详解
May 17 #Python
python算法演练_One Rule 算法(详解)
May 17 #Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 #Python
Python入门_学会创建并调用函数的方法
May 16 #Python
Python入门_浅谈逻辑判断与运算符
May 16 #Python
Python入门_条件控制(详解)
May 16 #Python
You might like
php 在文件指定行插入数据的代码
2010/05/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
python 文件操作删除某行的实例
2017/09/04 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
详解django自定义中间件处理
2018/11/21 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
Sony C++笔试题
2013/03/10 面试题
设计部经理的岗位职责
2013/11/16 职场文书
推荐信怎么写
2014/05/09 职场文书
企业标语大全
2014/07/01 职场文书
学习礼仪心得体会
2014/09/01 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
生日宴会祝酒词
2015/08/10 职场文书
交通事故协议书范本
2016/03/19 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书