如何用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实现多进程异步事件驱动引擎
Aug 25 Python
python如何定义带参数的装饰器
Mar 20 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
Python3.10的一些新特性原理分析
Sep 15 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 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中__set()实例用法和基础讲解
2019/07/23 PHP
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
python实现名片管理系统
2018/11/29 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
基于Django统计博客文章阅读量
2019/10/29 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
应届毕业生个人自我评价
2013/09/20 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
授权收款委托书
2014/09/23 职场文书
行政文员岗位职责
2015/02/04 职场文书
北京导游词
2015/02/12 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
学校运动会简讯
2015/07/20 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书