如何用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代码编辑器的选用(详解)
Sep 13 Python
浅谈Python中的私有变量
Feb 28 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python如何发布程序的详细教程
Oct 09 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
python hash每次调用结果不同的原因
Nov 21 Python
python绘制彩虹图
Dec 16 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Python HTMLTestRunner库安装过程解析
May 25 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
PHP7多线程搭建教程
2017/04/21 PHP
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python实现子类调用父类的方法
2014/11/10 Python
python实现文本文件合并
2015/12/29 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
用pycharm开发django项目示例代码
2019/06/13 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python 列表推导式使用详解
2019/08/29 Python
python定义类self用法实例解析
2020/01/22 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
StubHub德国:购买和出售门票
2017/09/06 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
SQL面试题
2013/12/09 面试题
高中生毕业自我鉴定
2013/10/10 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
优秀英文求职信范文
2015/03/19 职场文书
个人更名证明
2015/06/23 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
canvas绘制折线路径动画实现
2021/05/12 Javascript
Python爬取某拍短视频
2021/06/11 Python