如何用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脚本生成Android SALT扰码的方法
Sep 18 Python
一个简单的python程序实例(通讯录)
Nov 29 Python
Python对两个有序列表进行合并和排序的例子
Jun 13 Python
Python专用方法与迭代机制实例分析
Sep 15 Python
Python中逗号的三种作用实例分析
Jun 08 Python
Django框架中的对象列表视图使用示例
Jul 21 Python
python中函数传参详解
Jul 03 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
pandas 层次化索引的实现方法
Jul 06 Python
PyQT5 emit 和 connect的用法详解
Dec 13 Python
利用setuptools打包python程序的方法步骤
Jan 18 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简单浏览目录内容的实现代码
2013/06/07 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
jQuery 1.0.2
2006/10/11 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
Python定义函数实现累计求和操作
2020/05/03 Python
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
Android面试宝典
2013/08/06 面试题
财务部副经理岗位职责范本
2014/06/17 职场文书
超市店庆活动方案
2014/08/31 职场文书
农业生产宣传标语
2014/10/08 职场文书
项目验收申请报告
2015/05/15 职场文书
干部考核工作总结
2015/08/12 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
HAM-2000摩机图
2021/04/22 无线电
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python