如何用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 28 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
python关闭windows进程的方法
Apr 18 Python
Python使用filetype精确判断文件类型
Jul 02 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
pytorch 常用函数 max ,eq说明
Jun 28 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
bootstrap table小案例
2016/10/21 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
如何理解python对象
2020/06/21 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
军训考核自我鉴定
2014/02/13 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
教师工作态度自我评价
2015/03/05 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
Python import模块的缓存问题解决方案
2021/06/02 Python